嗨,我已经从 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
...等的值?
最佳答案
您提供的 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
将为 null
值返回 true也是如此。
关于java - 在 Java Android 中解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18171579/