gpt4 book ai didi

java - 使用 GSON 在 Java 中创建不同格式的嵌套 JSON 对象

转载 作者:行者123 更新时间:2023-12-01 19:35:08 25 4
gpt4 key购买 nike

我百分百确定这个问题已经被问过一百万次了,但我真的不确定如何正确处理这个问题。我还没有对 JSON 做过很多工作,也没有对其进行序列化。

基本上,这就是我想使用 GSON 创建的内容:

{
"wrapper" : [
{
"content": "loremipsum",
"positions": [0,3]
},
{
"content": "foobar",
"positions": [7]
},
{
"content": "helloworld"
}
]
}

分解一下,我们有一个数组字段,其中包含对象,这些对象本身包含两个字段,其中一个映射到字符串,另一个映射到另一个数组,该数组可以包含未知数量的整数,也可以完全失踪。

我什至无法想象如何使用 GSON 获得这个结果。到目前为止,我的想法是将所有内容都放在 Map<String, List<Map<String, Object>>> 中。野兽并转换它,但该对象困扰着我,因为在这种特殊情况下它可能是字符串或列表。可能会有强制转换,但这听起来像是一件愚蠢而复杂的事情,如果我只是在 String.format() 或类似的内容中手动输入它,看起来会更容易。

有没有更简单的方法来处理这些东西?

最佳答案

我会为您的数据创建一些 POJO 类:

class MyData {
private List<Data> wrapper;

//getters setters constructors
}

class Data {
private String content;
private List<Integer> positions;

//getters setters constructors
}

然后反序列化它:

Gson gson = new Gson();
String json = //json here
MyData myData = gson.fromJson(myJson, MyData.class);

用于序列化:

MyData myData = ...
String json = gson.toJson(myData);

另一种方法可以使用 JsonParser 解析此结构并访问其元素:

JsonParser jsonParser = new JsonParser();
JsonElement jsonElement = jsonParser.parse(json);
JsonElement wrapperElement = jsonElement.getAsJsonObject().get("wrapper"); //access wrapper
JsonArray array = wrapperElement.getAsJsonArray(); // access array

关于java - 使用 GSON 在 Java 中创建不同格式的嵌套 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068946/

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