2016-08-10 5 views
0

Давайте рассмотрим этот пример. У меня есть класс pojo, как показано ниже.Можно ли изменить порядок атрибутов, когда toJson()?

public class MyRecord{ 
    private String name; 
    private String id; 

    //constructors and getters,setters 
} 

, когда я получаю toJson (новый MyRecord ("MyName", "MyId") выход для выше я могу получить.

{ 
    "name": "MyName", 
    "id": "123" 
} 

И я унаследовал один, как следует добавить DateTime.

public class MyRecordWithDateTime extends MyRecord{ 
     private String DateTime;   

     //constructors and getters,setters 
} 

так, когда я назвал toJson (новый MyRecordWithDateTime ("2016-01-01", "MyName", "MyID"))

выход я с.

{ 
    "name": "MyName", 
    "id": "123", 
    "dateTime": "2016-01-01" 
} 

, но мне это действительно необходимо. (dateTime должен наступить первым.)

{   
    "dateTime": "2016-01-01", 
    "name": "MyName", 
    "id": "123" 
} 

Есть ли способ сделать это с сохранением наследства?

+1

Поля или члены объекта не имеют порядка (и не должны). Если вам нужны участники, вам следует использовать структуру списка/массива –

+0

@RichardH, если вы внимательно посмотрели Json.toJson() извлекает поля с помощью геттеров и точно следует за порядком геттеров. т. е. если вы пропустите геттер для некоторого поля, он не появится. Причина, по которой я это задал, - это вопрос, есть ли хотя бы аннотация. –

+0

Опираясь на порядок, в котором геттеры написаны в вашем классе, ужасный дизайн. Вам лучше позвонить самим геттерам в том порядке, в котором вы хотите –

ответ

1

Элементы/элементы/атрибуты в коллекции JSON не имеют порядка, и, насколько это касается структуры данных JSON, «порядок» не имеет значения.

Единственная причина, по которой я могу представить, что вы заинтересованы в заказе для целей печати/презентации. В этом случае я предлагаю вам вручную построить строку JSON самостоятельно.

+0

Так ваш ответ подразумевает, что -> «Не беспокойтесь о порядке ключей, вообще при создании ответов JSON» ??? –

+1

Правильно. JSON - это просто строковое представление объекта javascript. Порядок ключей в объекте javascript абсолютно не имеет значения - действительно, порядок не определен. Если вы хотите распечатать строку JSON с ключами в определенном порядке, вам придется реализовать это самостоятельно, вместо того чтобы полагаться на библиотечный метод. –

1

Прежде чем вы поместите его в свой JSON-файл, вы можете попытаться создать упорядоченный список (LinkedList, ArrayList или что-то в этом роде), а затем отсортировать его по своему усмотрению и после этого поместить его в JSON.

Но, очевидно, лучшая идея, чем моя существует!

Но факт: JSON не нужно сортировать! Вы просто используете геттер, и он найдет ваше значение, связанное с ключом! Даже если он находится в последней позиции.

+0

Я не могу тебя достать. Я хочу изменить порядок полей? –

+1

Просто используйте список в своем конструкторе. Что-то вроде: 'private LinkedList values ​​= new LinkedList (); «Объект - пример.Здесь это String – Souin

+0

Я могу использовать список, который вы предлагаете, но который меняет формат ответа с точки зрения отступа? –

 Смежные вопросы

  • Нет связанных вопросов^_^