大家好,我已经用PHP编写了JSON,结果如下:
{"ticket":[
{"ticket":[{"a":"10.00","b":"1.00","c":"1.00","d":"abcde","f":"7"},
{"ticket":[{"a":"10.00","b":"1.00","c":"1.00","d":"abcde","f":"7"}
]}
object {1}
ticket [2]
0 {6}
a : 10.00
b : 1.00
c : 1.00
d : abcde
e : 7
1 {6}
a : 10.00
b : 1.00
c : 1.00
d : abcde
e : 7
当我在java中打开这个时,整个事情就像一个JSONObject
,我分成两个JSONArray
,第一个包含工作ticket
,然后第二个包含
{"ticket":[{"a":"10.00","b":"1.00","c":"1.00","d":"abcde","f":"7"},
{"ticket":[{"a":"10.00","b":"1.00","c":"1.00","d":"abcde","f":"7"}
你期望的第二个JSONArray
的长度为2,可以分解为上面的两行(每个作为一个字符串)但是有一种方法我可以从字符串中获取数据而不做它上面的东西/标记它寻找a
,b
,c
...等的值?
答案 0 :(得分:2)
您提供的JSON存在缺陷。它错过了第二个和第三个]
键上的结束ticket
。
此外,如果可能,您应该更改名称,当您在JSON对象中搜索错误时,3 ticket
个键非常混乱。
基于此,我不确定你的JSON应该是什么样子。
您应该使用提供的JSONObject函数来访问这些值。它们易于使用,您无需创建中间变量。
假设您的JSON看起来像这样,并存储在名为json
的JSONObject变量中:
{ "tickets":
[
{ "tickets2": [{"a": 1, "b": 2, ...}] },
{ "tickets3": [{"a": 3, "b": 4, ...}] }
]
}
可以访问这样的值:
json.getJSONArray("tickets").getJSONArray("tickets2").getInt("a"); // = 1
如果您只想检查值是否可用,请使用isNull
功能。
if (json.getJSONArray("tickets").getJSONArray("tickets2").isNull("a")) {
//a is not available
}
请注意,当所需的密钥不可用时,get *函数会抛出JSONException
,而isNull
也会返回true,但值为null
。
答案 1 :(得分:0)
尝试GSON库,它可以将JSON字符串转换为等效的Java对象。