如何从Java中的json对象检索数据?

时间:2018-11-29 05:59:16

标签: java json

我正在尝试使用java从产品的JSON中检索值,即80000,其中Name是“ Camera”。有人可以帮我吗?

{
   "Products":{  
      "Product":[  
         {  
            "Name":"Tv",
            "Value":50000
         },
         {  
            "Name":"Camera",
            "Value":80000
         },
         {  
            "Name":"Phone",
            "Value":15000
         },
         
      ]
   }
}

我的代码:

JSONObject arrayOfProducts = jsonObj.optJSONObject("Products");
        JSONArray products = arrayOfProducts.getJSONArray("Product");
        for (int i = 0; i < products.length(); i++) {
            JSONObject objects = products.getJSONObject(i);
            Iterator key = objects.keys();
            while (key.hasNext()) {
                String k = key.next().toString();
                if(k.equals("Name")) {
                    if(objects.getString(k).equals("Camera")) {
                System.out.println("Key : " + k + ", value : " + objects.getString(k));
                    }
                }
            }

3 个答案:

答案 0 :(得分:0)

您的JSON错误。

  • 请勿使用左/右引号。而是使用没有方向的引号。

正确"Products" 错误: “Products”

  • 每个JSON对象都应包含在{}中。将您的整个JSON文件内容包含在{}中。

答案 1 :(得分:0)

如果要在JSON的键值对中获取值,则需要使用以下语法:

  • [JSONObject].get[data_type]([key_name])

    在以上给定的语法中,将[JSONObject]替换为 代表JSON的类型JSONObject的变量。就你而言 是objects

    用该特定键处的值的数据类型替换[data_type]。在里面 当前情况下,键"Value"的值为80000Integer。因此, 应该是getInt

    用您需要检索其值的键替换[key_name],该键在您的 情况是"Value"

因此,您需要使用该代码段来获取值80000,其中“相机”部分为:objects.getInt("Value")

这是您的整体更新代码:

    JSONObject arrayOfProducts = jsonObj.optJSONObject("Products");
    JSONArray products = arrayOfProducts.getJSONArray("Product");
    for (int i = 0; i < products.length(); i++) {
        JSONObject objects = products.getJSONObject(i);
        Iterator key = objects.keys();
        while (key.hasNext()) {
            String k = key.next().toString();
            if(k.equals("Name")) {
                if(objects.getString(k).equals("Camera")) {
            System.out.println("\nKey : " + k + "\nName : " + objects.getString(k) + ", \nValue : " + objects.getInt("Value"));
                }
            }
        }
    }

答案 2 :(得分:0)

为什么需要选择复杂的解决方案来解析JSON?

您应该使用定义一些实体,然后使用库来读取JSON值(例如:jackson的“ ObjectMapper”)以将其解析为Object。

在处理完Java对象之后,您可以将所有复杂的部分留给它们。