gpt4 book ai didi

java - JSON 数组中的不同对象

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

目前我正在尝试理解 json 及其工作原理。但我对对象数组有疑问。数组中的所有对象都有一个名为“值”的(我知道这很奇怪,这不是我的代码),这也是一个对象。现在问题来了:这个名为“value”的对象总是有不同的键值。所以我现在不知道如何将 json 代码解析为 java 对象代码,当它每次都不同时。

这里有一些例子:

数组的第一个对象:

 "value":
{
"local":
[
"English", "Deutsch", Espanol"
],
"english":
[
"English", "Deutsch", Espanol"
],
},

数组的第二个对象(现在是字符串,而不是对象):

"value" : "",

数组的第三个对象:

"value" : {},

...

也许我的解析错误。首先,我在java中为json代码创建了bean类,然后我使用谷歌的自动解析器。 ( Gson )当 json 代码中只有上述示例之一时,它会起作用。 (它不应该有所不同,比如从字符串更改为对象......)

Gson gson = new Gson();
Output output = gson.fromJson(json, Output.class);

Output 是 json 内容的主类。

我发现也许在解析时我可以首先检查一个名为“id”的值,然后我可以使用正确的变量创建另一个 beans 类......

这就是我需要解析为 java 对象的代码,你是如何做到的?问题在于称为“值”的键,因为它总是不同的。使用我使用谷歌解析器“gson”的方法,它不会工作,因为我收到异常,它是一个字符串,但我正在等待一个对象......

{
"status":"success",
"data":{
"panel":{
"title":{
"label":{ "local":"Tote Selection", "english":"Tote Selection" },
"image":"public/img/pick.jpg", "type":"default"
},
"isFirst":false, // currently not used
"isLast":false, // currently not used
"ownCount":0, // currently not used
"panelsCount":0, // currently not used
"elements":[
{
"type":"text",
"id":"1", "value":{ "local":"Scan next order tote",
"english":"Scan next order tote" },
"label":{ "local":"", "english":"" }, "color":"000000",
"fontsize":18, "fontstyle":"flat", "alignment":"left",
"rows":"undefined", "bgcolor":"", "isFocus":false
},
{
"type":"text",
"id":"4", "value":{ "local":"Scan tote: ", "english":"Scan tote: " },
"label":{ "local":"", "english":"" }, "color":"000000", "fontsize":20,
"fontstyle":"strong", "alignment":"left", "rows":"undefined",
"bgcolor":"", "isFocus":false
},
{
"type":"input",
"id":"6", "value":"", "label":{ "local":"", "english":"" },
"color":"000000", "fontsize":24, "fontstyle":"flat", "alignment":"left",
"rows":"undefined", "isFocus":true
},
{
"type":"button",
"id":"1", "value":{ "local":"", "english":"" },
"label":{ "local":"Menu", "english":"Menu" }, "color":"000000",
"fontsize":14, "fontstyle":"strong", "alignment":"left",
"rows":"undefined", "isFocus":false
},
{
"type":"button",
"id":"4", "value":{ "local":"", "english":"" },
"label":{ "local":"Enter", "english":"Enter" }, "color":"000000",
"fontsize":14, "fontstyle":"strong", "alignment":"right",18
"rows":"undefined", "isFocus":false
}
]
},
"authToken":"0fdd440a-619f-4936-ab74-d189accb5bd9",
"routing":{
"controller":"panel",
"action":"process",
"workflowId":"singlepicking",
"taskId":"orderSelection"
}
}
}

感谢您的帮助!

最佳答案

它看起来有点不同,但你的回答对我有帮助!谢谢

        JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(br).getAsJsonObject();

//now getting all the json values
String status = obj.get("status").getAsString();
JsonObject data = obj.getAsJsonObject("data");

String authToken = data.get("authToken").getAsString();
JsonObject routing = data.getAsJsonObject("routing");
String controller = routing.get("controller").getAsString();
String action = routing.get("action").getAsString();
String workflowId = routing.get("taskId").getAsString();

关于java - JSON 数组中的不同对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24750287/

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