저는 데이터를 비 직렬화하기 위해 잭슨과 협력 해 왔습니다. 일반적으로 부드러운 프로세스였습니다.약간의 손실 ... 잭슨의 비 직렬화
나를 괴롭 히게 한 것은 JSON 속성에 이름이 없을 때 알려진 양의 객체가있는 클래스를 사용자 정의 클래스로 deserialize하려고하는 것입니다. fullObject 각 객체는 다음과 일반 구조의 class에 매핑됩니다
{
"1411842351335": {"vers": [], "name": "Basic (and reversed card)", "tags": [], "did": 1, "usn": -1, "req": [[0, "all", [0]], [1, "all", [1]]], "flds": [{"size": 20, "name": "Front", "media": [], "rtl": false, "ord": 0, "font": "Arial", "sticky": false}, {"size": 20, "name": "Back", "media": [], "rtl": false, "ord": 1, "font": "Arial", "sticky": false}], "sortf": 0, "latexPre": "\\documentclass[12pt]{article}\n\\special{papersize=3in,5in}\n\\usepackage[utf8]{inputenc}\n\\usepackage{amssymb,amsmath}\n\\pagestyle{empty}\n\\setlength{\\parindent}{0in}\n\\begin{document}\n", "tmpls": [{"afmt": "{{FrontSide}}\n\n<hr id=answer>\n\n{{Back}}", "name": "Card 1", "qfmt": "{{Front}}", "did": null, "ord": 0, "bafmt": "", "bqfmt": ""}, {"afmt": "{{FrontSide}}\n\n<hr id=answer>\n\n{{Front}}", "name": "Card 2", "qfmt": "{{Back}}", "did": null, "ord": 1, "bafmt": "", "bqfmt": ""}], "latexPost": "\\end{document}", "type": 0, "id": "1411842351335", "css": ".card {\n font-family: arial;\n font-size: 20px;\n text-align: center;\n color: black;\n background-color: white;\n}\n", "mod": 1411842351}}
:
전반적인 결과를 보면, OBJECTID의지도 역 직렬화하고있어
public class AnkiNoteType {
...
private List<AnkiNoteTypeReq> req;
...
}
을 문제가있는 객체로를
package com.openwebsrs.libanki.entities;
public class AnkiNoteTypeReq {
...
private Integer a;
private String b;
private List<Integer> c;
...
}
내가 여기에있는 문제와 다른 문제 특정 상황에 이름이없는 객체 목록 (즉, "name : value"가 "value"가 아님)을 지정된 클래스에 매핑합니다. 내가 해왔 무엇
"req": [[0, "all", [0]], [1, "all", [1]]]
은 다음 중요한 비트 here in implementation을 볼 수 있습니다 :
@Override
public List<AnkiNoteType> getAnkiNoteTypes(String noteTypesString) throws IOException {
Map<Long, AnkiNoteType> noteTypeMap = objectMapper.readValue(noteTypesString, new TypeReference<Map<Long, AnkiNoteType>>() {
});
return new ArrayList(noteTypeMap.values());
}
내가 전체 솔루션을 필요로하지 않습니다. 나는 옳은 길로 가야합니다.
시간 내 주셔서 감사합니다.
json의 형식을 제어 할 수 있습니까? 그렇다면 배열의 배열 (실제로는 객체) 대신 "req"를 배열로 선택하는 것이 좋습니다. 이 방법은 현재의 문제를 해결할뿐만 아니라 필드가 모호해 지도록이 json 표현을 확장해야하는 미래의 문제를 해결합니다. – hofan41
불행히도, 아니오. 데이터는 다른 응용 프로그램 (http://ankisrs.net/)의 데이터베이스에서 직접 가져옵니다. 생각을 경탄하십시오! – user3581961