Правильный порядок в ответе JSON в соответствии с объявлением бина - PullRequest
0 голосов
/ 31 октября 2019

Есть ли способ, чтобы ответ JSON формировался в том же порядке, в котором я объявляю атрибуты в POJO?

Если возможно, я хотел бы сделать POJOS максимально простым, без аннотацийи тому подобное (например, @JsonPropertyOrder или @XmlType propOrder, ...)

Если это мой POJO:

public class Header {

    private String id;
    private String date;
    private String name;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }

    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}   

Я хочу, чтобы ответ был:

{
   "header": {
      "id": "1",
      "date": "20191031223016", 
      "name": "SAMPL"
  }
}

... не это:

{
  "header": {
    "date": "20191031223016",
    "id": "1",
    "name": "SAMPL"
  }
}

Ответы [ 2 ]

1 голос
/ 31 октября 2019

JSON по определению имеет в своей языковой спецификации неупорядоченные ключи. Это означает, что нет различий между объектами JSON с ключами в разных порядках.

Если вам требуются упорядоченные данные, вы должны заключить члены в список JSON в структуре, подобной следующей:

[
    {"key": "id", "value": 1"},
    {"key" ....
]

, что также не является целью JSON. Вы должны принимать ключи в любом порядке, в любом случае.

0 голосов
/ 31 октября 2019

В таком случае, на мой вкус, самое чистое решение будет таким:

import javax.xml.bind.annotation.XmlType;

@XmlType(propOrder = {"id", "date", "name"})
public class Header {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...