我是stackoverflow的新手。
我正在创建一个Java应用程序,它将从Web服务器获取数据。数据是json格式。示例”
[
{
"item_name": "Adame",
"item_type": "Special",
"item": "Chestplate",
"item_min_lvl": "50",
"enchantment": {
"health": "0.3",
"dam": "24%",
"life": "0.1",
"xp": "24%",
"loot": "22%"
},
"def": "73"
},
{
"item_name": "Sticks'",
"item_type": "Unique",
"item": "Stick",
"item_min_lvl": "4",
"enchantment": {
"health": "0.6",
"mana": "1",
"dam": "12%",
"life": "0.3",
"xp": "17%",
"loot": "17%"
},
"min_dam": "39",
"max_dam": "34"
}
]
我知道如何使用Gson反序列化json。正如你所看到的,它是以[
开头的。我以前从未反序列化过这种情况。另外,json数据也不一样(例如enchantment
)。我也在谷歌上搜索过,但我找不到任何类似的情况。有人能帮我写代码吗?
2条答案
按热度按时间kyxcudwk1#
尝试与此代码。你会得到你的问题的答案。这是一个列表有2个项目。
输出:
每个条目的结构都不相同,因此不能将POJO用于这种类型的JSON。
只需使用
ArrayList<Map<String, Object>>
并从Map中访问基于key的值。输出:
mspsb9vt2#
这在Java和GSON中实际上是有效的:
它将解析并返回一个
YourObject
数组,只需创建表示JSON对象的Java类,并根据需要替换占位符。编辑:正如Braj之前所说的,您可以创建一个完全形式的POJO,包括其他(非对称)属性(我在这里借用了Braj回答中的代码):
如果原始JSON中没有提供这些值,GSON将解析它并将其设置为
null
。然而,从另一个问题来看,似乎为附魔提供的JSON(Java - JSON Parser Error)不一致,所以这会导致问题。我建议将附魔的JSON作为一个数组发送以保持一致性,然后您可以将POJO结构为: