我100%肯定这个问题已经被问过无数次了,但是我真的不知道如何正确地处理这个问题。
基本上,这就是我想使用GSON创建的内容:
{
"wrapper" : [
{
"content": "loremipsum",
"positions": [0,3]
},
{
"content": "foobar",
"positions": [7]
},
{
"content": "helloworld"
}
]
}
分解一下,我们得到了一个数组的字段,其中包含的对象本身包含两个字段,其中一个Map到字符串,另一个Map到另一个数组,该数组可以包含未知数量的整数,或者可以完全缺失。
我甚至无法想象如何使用GSON获得这个结果。到目前为止,我的想法是将所有内容放在一个Map<String, List<Map<String, Object>>>
beast中并对其进行转换,但这个Object让我很困扰,因为在这个特定的例子中,它可能是String或List。可能会有强制转换,但这听起来像是一个愚蠢的复杂的东西,如果我只是在String.format()或类似的格式中手动键入它,看起来会更容易。
有没有更简单的方法来处理这些东西?
4条答案
按热度按时间oxiaedzo1#
我会为您的Data创建一些POJO类:
然后,为了反序列化它:
对于序列化:
另一种方法是使用
JsonParser
解析此结构并访问其元素:pgpifvop2#
您可以使用gson JsonElement作为将包含JsonElement(如JsonObject或JsonArray)的容器对象
https://static.javadoc.io/com.google.code.gson/gson/2.6.2/com/google/gson/JsonElement.html
inb24sb23#
最好使用Pojo进行格式化。
对于反序列化/反序列化,可以使用Jackson
或Gson
vmpqdwk34#
如果没有POJO,这似乎可以使用Gson解决嵌套JSON解决方案
输出为: