Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中从json对象检索数据?_Java_Json - Fatal编程技术网

如何在java中从json对象检索数据?

如何在java中从json对象检索数据?,java,json,Java,Json,我正在尝试使用java从产品的JSON中检索值,即,80000,其中名称为“Camera”。谁能帮帮我吗? 霉菌代码: JSONObject arrayOfProducts=jsonObj.optJSONObject(“产品”); JSONArray products=arrayOfProducts.getJSONArray(“产品”); 对于(int i=0;i

我正在尝试使用java从产品的JSON中检索值,即,
80000
,其中名称为“Camera”。谁能帮帮我吗?

霉菌代码:
JSONObject arrayOfProducts=jsonObj.optJSONObject(“产品”);
JSONArray products=arrayOfProducts.getJSONArray(“产品”);
对于(int i=0;i
您的JSON错误

  • 不要使用左/右引号,而是使用没有方向的引号
正确:
“产品”
错误:
“产品”

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

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

  • [JSONObject]。获取[data\u type]([key\u name])

    在上述给定语法中,将
    [JSONObject]
    替换为 表示JSON的
    JSONObject
    类型的变量。在您的示例中, 它是
    对象

    [data\u type]
    替换为该特定键处的值的数据类型 当前情况下,键
    “value”
    的值是
    80000
    是一个
    整数
    。因此 应该是
    getInt

    [key\u name]
    替换为需要检索其值的键,该键位于 大小写为“值”

因此,您需要使用代码片段来获取值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"));
                }
            }
        }
    }
JSONObject arrayOfProducts=jsonObj.optJSONObject(“产品”);
JSONArray products=arrayOfProducts.getJSONArray(“产品”);
对于(int i=0;i
为什么需要选择复杂的解决方案来解析这样的JSON

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


你可以把所有复杂的部分留给他们,然后你就开始处理java对象。

你的代码可能会重复。但是你的JSON不好。奇怪的引号和JSON对象必须以“{”开头,以“}”结尾。你如何创建jsonObj?你看到了什么错误?p.S.你可以像这样取“Name”:objects.getString(“Name”)并检查现有的“Name”(如果需要)如下:objects.has(“Name”)这是json的一部分。jsonObj包含整个json,我正试图通过它来解析json。编辑的引号您可以编辑上面的代码来检索Camera的值,即80000?replace System.out.println(“Key:+k+”,value:+objects.getString(k))在System.out.println(“键:+k+”,名称:+objects.getString(k)+”,值:+objects.getInt(“值”);
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));
                    }
                }
            }
    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"));
                }
            }
        }
    }