gpt4 book ai didi

java - 有点迷路…… jackson 反序列化

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:01:47 25 4
gpt4 key购买 nike

我一直在与 Jackson 合作反序列化数据。总的来说,这是一个顺利的过程。

让我感到难过的是,当 JSON 属性缺少名称时,试图将具有已知数量对象的东西反序列化为自定义类。

总的来说,我正在反序列化 objectId:fullObject 的映射

{
"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}}

每个对象都映射到 class一般结构如下:

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;
...
}

我在这里和其他情况下一直遇到的问题是将没有名称的对象列表(也就是说,没有“名称:值”,只有“值”)映射到指定的类中。

"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());
}

我不需要完整的解决方案。我只需要走上正确的轨道。

感谢您的宝贵时间!

最佳答案

您也许可以使用 http://fasterxml.github.io/jackson-annotations/javadoc/2.5/com/fasterxml/jackson/annotation/JsonFormat.Shape.html要求 jackson 直接映射到一个数组。在这种模式下,jackson需要你注解属性的顺序,从一个json数组映射到一个对象。

关于java - 有点迷路…… jackson 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com