gpt4 book ai didi

Java - JSON 来回解析

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

我一直在结合不同 JSON 库的多种方法,但似乎无法找到一种优雅的方法来在测试中与我的 JSON 文件进行相互转换。

JSON 文件如下所示:

[
{
"LonelyParentKey": "Account",
"ProcessNames": [
{"Name": "ProcessOne",
"Sequence": "1"
},
{
"Name": "ProcessTwo",
"Sequence": "2"
},
{
"Name": "ProcessThree",
"Sequence": "3"
},
{
"Name": "ProcessFour",
"Sequence": "4"
}
]
}
]

在使用 TestNG 的基于 QAF 的测试中,我尝试导入“ProcessName”键的值,如下所示:

  String lonelyParentKey = (String) data.get("LonelyParentKey");
ArrayList processNames = (ArrayList) data.get("ProcessNames");

我发现在我正在使用的框架中,我有多个 JSON 库选项,在阅读其他 SO 帖子后一直在尝试使用 GSON。

所以,接下来的测试代码是:

  Gson gson = new Gson();
JSONArray jsa = new JSONArray(processNames);

我试图创建一个在数据结构中包含 4 个子对象的对象,我可以在其中访问每个子对象的名称和序列键。

在查看我的 jsa 对象时,它似乎具有我想要的结构,但是我如何访问第一个子对象的 Sequence 键?在 IntelliJ IDEA 的 REPL 中,执行 jsa.get(0) 会得到 "{"Name": "ProcessOne","Sequence": "1"}"

看起来 map 可能很有用,但需要帮助选择正确的数据结构和实现建议。

TIA!

最佳答案

不确定您使用的是哪个库,但它们都提供几乎相同的方法。 JSONArray 看起来像 org.json.JSONArray,所以那就是

JSONArray jsa = new JSONArray(processNames);
int sequenceFirstEntry = jsa.getJSONObject(0).getInt("Sequence");

一些 JsonArray 实现也实现了 Iterable,那么这也可以工作

JSONArray jsa = new JSONArray(processNames);
for (JSONObject entry : jsa) {
int sequenceFirstEntry = entry.getInt("Sequence");
}

关于Java - JSON 来回解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59736862/

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