java - 在 Java Android 中解码 JSON

标签 java android json

嗨,我已经从 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,可以分解为上面的两行(每行作为一个字符串),但是有没有办法让我从字符串而不对其进行任何操作/标记它以查找 abc ...等的值?

最佳答案

您提供的 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/

相关文章:

javascript - 为什么我的 "npm install"下载了很多我没有指定的多余库?

Javascript 不使用 jQuery 解析 JSON

java - Activity/fragment 转换是否与 Lollipop 之前的设备兼容?

java - 在 javafx 应用程序中单击对话框按钮时内存增加

java - @ResponseBody 和 HttpServletResponce 有什么区别

java - 如何用java知道文件是否损坏(可读)?

android - 如何从 Android Studio 运行单个 Kotlin 类

Android:将外部文件和文件夹存储为 Assets ?资源?还有别的吗?

ruby-on-rails - 如何使用 JBuilder Gem 发送 http 状态

Java如何仅更改字段分隔符而不更改实际数据