当前位置: 首页 > 面试题库 >

使用JSONReader或JSONObject / JSONArray解析JSON数据

丁阳炎
2023-03-14
问题内容

我有一些JSON(如下所示),我试图解析整个JSON,每个对象将是一个声明下面变量的类的新实例。做这个的最好方式是什么?我应该使用JSONReader还是使用JSONObject和JSONArray。我一直在阅读一些教程并提出一些一般性问题,但是我还没有看到任何有关如何解析此类数据的示例。

{
    "id": 356,
    "hassubcategories": true,
    "subcategories": [
        {
            "id": 3808,
            "CategoryName": "Current Products",
            "CategoryImage": null,
            "hassubcategories": true,
            "subcategories": [
                {
                    "id": 4106,
                    "CategoryName": "Architectural",
                    "CategoryImage": "2637",
                    "hassubcategories": true,
                    "subcategories": [
                        {
                            "id": 391,
                            "CategoryName": "Flooring",
                            "CategoryImage": "2745",
                            "hassubcategories": false
                        }
                    ]
                }
            ]
        },
        {
            "id": 3809,
            "CategoryName": "Non-Current Products",
            "CategoryImage": null,
            "hassubcategories": true,
            "subcategories": [
                {
                    "id": 4107,
                    "CategoryName": "Desk",
                    "CategoryImage": "2638",
                    "hassubcategories": true,
                    "subcategories": [
                        {
                            "id": 392,
                            "CategoryName": "Wood",
                            "CategoryImage": "2746",
                            "hassubcategories": false
                        }
                    ]
                }
            ]
        }
    ]
}

问题答案:

如果我要这样做,我会将整个字符串解析为一个JSONObject

JSONObject obj = new JSONObject(str);

然后我看到您的子类别是JSONArray。所以我会这样转换

JSONArray arr = new JSONArray(obj.get("subcategories"));

这样,您可以循环并实例化您的类对象

for(int i = 0; i < arr.length; i++)
JSONObject temp = arr.getJSONObject(i);
Category c = new Category();
c.setId(temp.get("id"));


 类似资料:
  • 本文向大家介绍浅析Java中JSONObject和JSONArray使用,包括了浅析Java中JSONObject和JSONArray使用的使用技巧和注意事项,需要的朋友参考一下 废话不多说,先给大家贴代码,具体代码如下所示: 运行结果如下: 通过构造器的方式创建的JSONObject对象:{"derek":"23","dad":"49","mom":"45"} 通过fromObject方法将ma

  • 本文向大家介绍JSONObject与JSONArray的使用,包括了JSONObject与JSONArray的使用的使用技巧和注意事项,需要的朋友参考一下 1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar

  • 问题内容: 我有这样的数据: 新闻项目: ID 标题 日期 文本 可能有许多NewsItems说10。我必须将它们发送到jquery。 我正在这样做: 这将创建一个JSON字符串,如下所示: 这是正确的方法吗? 如何解析此字符串,以便可以在jQuery中获取每个新闻项对象,以便可以访问attr。 像这样: 或者,如果这是创建JSON字符串的错误方法,请提出一些更好的方法,并以jQuery分析为例。

  • 本文向大家介绍Java使用JSONObject操作json实例解析,包括了Java使用JSONObject操作json实例解析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java使用JSONObject操作json。分享给大家供大家参考,具体如下: 简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notatio

  • 问题内容: 我将从服务器接收JSON对象或数组,但是我不知道它将是什么。我需要使用JSON,但是要这样做,我需要知道它是对象还是数组。 我正在使用Android。 有没有人有这样做的好方法? 问题答案: 我找到了更好的方法来确定: tokenizer可以返回更多类型:http : //developer.android.com/reference/org/json/JSONTokener.html

  • 问题内容: 我有一个来自服务器的JSON字符串,它看起来像这样: 我的任务是获取“ term_id”和“ name”字段的值。我曾经使用以下代码从当前JSONObject中获取“类别”对象: 和看起来像这样: 但是在那之后,我不知道如何获得这些领域。有什么方法可以从JSONObject获取所有JSONObject子级吗? 如果您有源代码或可以举一个例子,请与我分享。 问题答案: 在这里,您可以检索