Для примера предположим, что у вас есть класс Person
с помощью только name
.
private class Person {
public String name;
public Person(String name) {
this.name = name;
}
}
Мой личный фаворит в отношении большой сериализации / де-сериализации объектов JSON.
Gson g = new Gson();
Person person = g.fromJson("{\"name\": \"John\"}", Person.class);
System.out.println(person.name); //John
System.out.println(g.toJson(person)); // {"name":"John"}
Обновить
Если вы хотите получить вы можете легко сделать это с помощью библиотеки Google:
JsonObject jsonObject = new JsonParser().parse("{\"name\": \"John\"}").getAsJsonObject();
System.out.println(jsonObject.get("name").getAsString()); //John
Если вам не нужна де-сериализация объекта, а просто получить атрибут, вы можете попробовать org.json (или посмотреть пример GSON выше!) [/ g13]
JSONObject obj = new JSONObject("{\"name\": \"John\"}");
System.out.println(obj.getString("name")); //John
ObjectMapper mapper = new ObjectMapper();
Person user = mapper.readValue("{\"name\": \"John\"}", Person.class);
System.out.println(user.name); //John
Я не знаю, откуда вы понимаете, что «в принципе» он должен печатать «abcdef». Где это задокументировано?
Что-то вроде [C@6e1408
, конечно, not случайный бред - это тот же способ построения строки из объекта, как и любой другой тип, который не переопределяет toString()
inherits - это представление типа ([
, указывающего массив; C
, указывающий тип примитива char
), за которым следует хэш-код идентификатора в шестнадцатеричном формате. Подробнее см. Документацию для Object.toString()
. Как это бывает, массивы не переопределяют toString
.
Если вы хотите [a, b, c, d, e, f]
, вы можете использовать Arrays.toString(char[])
. Если вы хотите abcdef
, вы можете использовать new String(char[])
.