2
다음 잭슨은 Jackson Mapper를 사용하여 POJO에 매핑됩니다. deserialization 중에 json의 배열 열 순서는 어떻게 유지합니까? 어떤 특수 효과를 사용해야합니까?리스트에 json 배열을 비 직렬화하고 목록 내의 json으로부터 배열 순서를 유지
JSON :
{
"columnNames": [
"FirstName",
"LastName",
"UserName"
],
"values": [
[
"John",
"Smith",
"jsmith"
],
[
"Tim",
"Cook",
"tcook"
]
]
}
POJO :
public class Data implements Serializable {
private List<String> columnNames = new ArrayList<String>();
private List<ArrayList<String>> values = new ArrayList<ArrayList<String>>();
public List<String> getColumnNames() {
return columnNames;
}
public void setColumnNames(List<String> columnNames) {
this.columnNames = columnNames;
}
public List<ArrayList<String>> getValues() {
return values;
}
public void setValues(List<ArrayList<String>> values) {
this.values = values;
}
}
- 예상 getColumnNames() : { "FIRSTNAME", "성", "사용자 이름 "}
- 실제 getColumnNames() : { "UserName", "FirstName", "LastName"}
나는 어떤 도움을 주신 잭슨지도를 처음 사용합니다.
디시리얼라이저는 어떤 모습입니까? 단순히 잘못된 순서로 비 직렬화 할 수있는 것처럼 보입니다. JSON이 예상 한 순서대로되지 않았을 수도 있습니다. – Aarowaim
Hmmm, JSON 중 하나가 잘못되었거나'readValue' 구현에 항상 부작용이있는 것은 아닙니다. 분명히 주문을 유지할 필요가 있지만 맞춤형 디시리얼라이저 작성 이외에도이 문제를 극복 할 방법이 없다고 생각합니다. deserialization을 위해 GSON 라이브러리를 사용 했으므로 디시리얼라이저를 작성하는 것은 꽤 쉬웠습니다. 당신이 다른 라이브러리를 시험해 볼 수있는 옵션이 있는지는 확실하지 않다. (코드가 얼마나 많은지에 달려있다.) – Aarowaim
나는 그것을 또한 검사했고,'Jackson'은 예상대로 그것을 deserialize했다. 사용자 지정 디시리얼라이저 또는 이와 비슷한 것을 사용하고 있습니까? 직설화 한 후에 실수로이 목록에서 주문을 변경하고 계신지 모르십니까? –