По какой причине массивы в java не переопределяют метод toString ()? [Дубликат]

Для примера предположим, что у вас есть класс Person с помощью только name.

private class Person {
    public String name;

    public Person(String name) {
        this.name = name;
    }
}

Google GSON ( Maven )

Мой личный фаворит в отношении большой сериализации / де-сериализации объектов 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 ( Maven )

Если вам не нужна де-сериализация объекта, а просто получить атрибут, вы можете попробовать org.json (или посмотреть пример GSON выше!) [/ ​​g13]

JSONObject obj = new JSONObject("{\"name\": \"John\"}");

System.out.println(obj.getString("name")); //John

Джексон ( Maven )

ObjectMapper mapper = new ObjectMapper();
Person user = mapper.readValue("{\"name\": \"John\"}", Person.class);

System.out.println(user.name); //John

31
задан Raedwald 8 July 2014 в 00:38
поделиться

9 ответов

33
ответ дан Community 26 August 2018 в 03:28
поделиться
1
ответ дан Brigham 26 August 2018 в 03:28
поделиться
2
ответ дан jhkj 26 August 2018 в 03:28
поделиться

Я не знаю, откуда вы понимаете, что «в принципе» он должен печатать «abcdef». Где это задокументировано?

Что-то вроде [C@6e1408, конечно, not случайный бред - это тот же способ построения строки из объекта, как и любой другой тип, который не переопределяет toString() inherits - это представление типа ([, указывающего массив; C, указывающий тип примитива char), за которым следует хэш-код идентификатора в шестнадцатеричном формате. Подробнее см. Документацию для Object.toString() . Как это бывает, массивы не переопределяют toString.

Если вы хотите [a, b, c, d, e, f], вы можете использовать Arrays.toString(char[]) . Если вы хотите abcdef, вы можете использовать new String(char[]).

31
ответ дан Jon Skeet 26 August 2018 в 03:28
поделиться
1
ответ дан Jon7 26 August 2018 в 03:28
поделиться
0
ответ дан om-nom-nom 26 August 2018 в 03:28
поделиться
0
ответ дан Vinay Prajapati 26 August 2018 в 03:28
поделиться
0
ответ дан Harshul 26 August 2018 в 03:28
поделиться
-3
ответ дан Redsmurf 26 August 2018 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: