gpt4 book ai didi

java - JSONArray 未正确解析

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

我有一个需要解析的 JSONArray。但是,问题是其中一个对象只有一个字段,而其余对象有两个字段。

{"Event":{
"Details":[
{
"Key" : "AA",
"Value" : "a"
},
{
"Key" : "BB",
"Value" :"B"
},
{
"Key" :"CC"
},
{
"Key" :"MIN",
"Value" : -1
}
]
}}

所以,现在当我使用这段代码解析它时

private void parse(String jsonStr) throws JSONException{
String Value, Key;
JSONObject obj = new JSONObject(jsonStr);
JSONArray array = obj.getJSONObject("Event").getJSONArray("Details");
for(int i = 0; i < array.length(); i++) {
Key = array.getJSONObject(i).getString("Key");
if(Key.equals("CC")){ // make case for null here
Value = "Something was supposed to be here";
}

Object type = array.getJSONObject(i).get("Value");
//System.out.println("Type: \n"+type.getClass().getSimpleName());
if(type instanceof String) {
String ValueStr=array.getJSONObject(i).getString("Value");
System.out.println(ValueStr);
} else if(type instanceof Number) {
Integer ValueInt = array.getJSONObject(i).getInt("Value");
System.out.println(ValueInt);
}
}
}

读取“CC”后停止解析。它甚至不读取下一个值。 “Key”CC 的“Value”有时为空,有时为字符串。那么,我该如何捕捉呢?另外,当 CC 的“Value”为空时,如何继续解析下一个对象?

编辑:所以,我放置了一个 try-catch block ,但 for 循环甚至不再迭代。它只循环一次。

for(int i =0; i<array.length() ; i++)
{
Key = array.getJSONObject(i).getString("Key");

try
{
Object type = array.getJSONObject(i).get("Value");
//System.out.println("Type: \n"+type.getClass().getSimpleName());

if(type instanceof String)
{
String ValueStr = array.getJSONObject(i).getString("Value");
System.out.println(ValueStr);
}

else if(type instanceof Number)
{
Integer ValueInt = array.getJSONObject(i).getInt("Value");
System.out.println(ValueInt);
}
}
catch(JSONException e){
Value="something was supposed to be here";
}

}

最佳答案

您的 json 无效。请验证您的 json,然后尝试您的代码。

使用http://jsonlint.com/验证您输入的 json。

关于java - JSONArray 未正确解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31153208/

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