Java-使用动态键名进行JSON读取

时间:2018-12-12 15:41:29

标签: java json dynamic key deserialization

我有一个看起来像这样的JSON:

{
"code": 200,
"results": [
    {           
      "_id": "210574931",
      "smcp": "139475012",
      "AABCD": {},
      "ABCXDEF": {},
      "ABCD": {},
      "ABCDEF": {},
      "ASDF": {}
    }
]

}

ABCD键是动态的,其余是静态的。如何正确读取动态键/值?

对于静态的,我一直在使用@SerializedName(“ code”)注释,它可以工作。我做了一些搜索,看来我可以做这样的事情:

    Type mapType = new TypeToken<Map<String, ABCD> >() {}.getType(); // ABCD is sample class to store "AABCD", "ABCXDEF", etc...
    Gson gson = new Gson();
    Map<String, PmcPrice.Locale> result = gson.fromJson(json, mapType);

但是失败了,因为不是我所有的JSON都是ABCD对象。有静态字段,例如“代码”,“ _ id”,“ smcp”

这是我得到的例外:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was NUMBER at line 2 column 14 path $.

如何使用部分静态字段和动态键处理JSON?

谢谢。

0 个答案:

没有答案