Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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字符串时遇到问题 代码: 我也试过: JSONArray header = json.getJSONArray("header"); 但是仍然抛出一些异常 我缺少什么?这不是有效的JSON文件 'header': '[{"doc_no": "DN00001","stage":"P"}]' 数组不能被包围。 字符串应该用“而不是” 阅读JSON语法。这不是有效的JSON文件 'header': '[{"doc_no": "DN00001","stage":

我在Java中读取/解析以下JSON字符串时遇到问题

代码:

我也试过:

JSONArray  header = json.getJSONArray("header");
但是仍然抛出一些异常


我缺少什么?

这不是有效的JSON文件

'header': '[{"doc_no": "DN00001","stage":"P"}]'
数组不能被
包围。

字符串应该用
而不是


阅读JSON语法。

这不是有效的JSON文件

'header': '[{"doc_no": "DN00001","stage":"P"}]'
数组不能被
包围。

字符串应该用
而不是


阅读JSON语法。

JSONObject header=newJSONObject(“header”)

您的意思是从
json
获取标题,而不是创建新的
JSONObject


jsonobjectheader=json.get(“header”)

JSONObject头=新的JSONObject(“头”)

您的意思是从
json
获取标题,而不是创建新的
JSONObject

jsonobjectheader=json.get(“header”)

您的意思是从现有对象获取“header”字段吗

JSONObject header =  json.getJSONObject("header");
但是从你的评论来看

// {'header': '[{"doc_no": "DN00001","stage":"P"}]','section':'[{"upper":100,"lower":1]'}
您希望“header”是一个数组(而不是一个对象),但数据将其作为一个字符串(看起来像一个数组),因此您可能需要修复JSON和Java代码

您的意思是从现有对象获取“header”字段吗

JSONObject header =  json.getJSONObject("header");
但是从你的评论来看

// {'header': '[{"doc_no": "DN00001","stage":"P"}]','section':'[{"upper":100,"lower":1]'}

您希望“header”是一个数组(而不是一个对象),但数据将其作为一个字符串(看起来像一个数组),因此您可能需要修复JSON和Java代码。

这里,请看这段代码。如果您想从JSONObject中获取JSONObject,请修复JSON字符串

public static void main(String[] args) throws JSONException {
    String result = "{'header': '[{\"doc_no\": \"DN00001\",\"stage\":\"P\"}]','section':'[{\"upper\":100,\"lower\":1]'}";
    JSONObject json = new JSONObject(result);
    // json now looks like this :-
    //
    if (json != null) {
        String header = json.getString("header");
        System.out.println(header);
    }

}
你怎么了?两件事:

  • 您的JSON字符串都是非法的。多亏了语法分析人员的支持。应该是

    {
      "header": [{"doc_no": "DN00001","stage":"P"}],
      "section":[{"upper":100,"lower":1]
    }
    
  • 它不能单独解决你的问题。因为您想要获取
    JSONObject
    ,但是您提供了一个
    JSONArray
    (为什么这样做?)。所以去掉那些方括号

  • 还是不开心。您可以看到,您正试图创建一个新的
    JSONObject
    ,方法是(显然)
    newjsonobject(“header”)
    使用字符串taht,而不是JSON。9并期望它不会抛出错误?多残忍啊。)另外,你想
    获取
    而不是
    设置
    。因此,请使用
    json.getXXX(“header”)
    ,其中XXX可以是
    String
    JSONObject
    JSONArray
    等等


  • 伙计,拿着这个密码。如果您想从JSONObject中获取JSONObject,请修复JSON字符串

    public static void main(String[] args) throws JSONException {
        String result = "{'header': '[{\"doc_no\": \"DN00001\",\"stage\":\"P\"}]','section':'[{\"upper\":100,\"lower\":1]'}";
        JSONObject json = new JSONObject(result);
        // json now looks like this :-
        //
        if (json != null) {
            String header = json.getString("header");
            System.out.println(header);
        }
    
    }
    
    你怎么了?两件事:

  • 您的JSON字符串都是非法的。多亏了语法分析人员的支持。应该是

    {
      "header": [{"doc_no": "DN00001","stage":"P"}],
      "section":[{"upper":100,"lower":1]
    }
    
  • 它不能单独解决你的问题。因为您想要获取
    JSONObject
    ,但是您提供了一个
    JSONArray
    (为什么这样做?)。所以去掉那些方括号

  • 还是不开心。您可以看到,您正试图创建一个新的
    JSONObject
    ,方法是(显然)
    newjsonobject(“header”)
    使用字符串taht,而不是JSON。9并期望它不会抛出错误?多残忍啊。)另外,你想
    获取
    而不是
    设置
    。因此,请使用
    json.getXXX(“header”)
    ,其中XXX可以是
    String
    JSONObject
    JSONArray
    等等


  • 我认为您需要从变量
    json
    中获取
    标题
    字段。创建新的JSONObject看起来很奇怪。我认为您需要从变量
    json
    获取
    header
    字段。创建新的JSONObject看起来很奇怪。为什么它不是有效的JSON。它是一个有效的JSON,键为'header',值为字符串[{“doc_no”:“DN00001”,“stage”:“P”}],它不是严格有效的,但大多数解析器都可以工作。“不严格有效”意味着它无效-一些解析器的强制程度可能较低,因此应该用
    而不是
    @TS——我不会走向完美。。。发布的代码是错误的。这个答案并没有说明
    JSONObject(“header”)
    试图从字符串“header”创建
    JSON
    对象这一事实。您可以用JSONObject解析单引号的JSON字符串。@Nishant gath写道,他尝试了
    JSON.getJSONArray(“header”)
    ,在这种情况下应该可以使用。为什么它不是有效的JSON。它是一个有效的JSON,键为'header',值为字符串[{“doc_no”:“DN00001”,“stage”:“P”}],它不是严格有效的,但大多数解析器都可以工作。“不严格有效”意味着它无效-一些解析器的强制程度可能较低,因此应该用
    而不是
    @TS——我不会走向完美。。。发布的代码是错误的。这个答案并没有说明
    JSONObject(“header”)
    试图从字符串“header”创建
    JSON
    对象这一事实。您可以用JSONObject解析单引号的JSON字符串。@Nishant gath写道,他尝试了
    JSON.getJSONArray(“header”)
    ,在本例中应该可以使用。太好了!,但是如果你读了我的问题,我也尝试了获取JSONArray(“header”),但运气不好,这是一个好的指针…@gath dude,你需要像#1一样修复你的JSON字符串。如果想要
    JSONArray
    ,请跳过#2。在#3中,使用
    json.getJSONArray(“header”)。虽然每个人都给出了一个指向正确方向的指针,即json字符串的格式不正确,但我将选择这个答案进行详细解释。谢谢大家,我的服务器(python)没有正确格式化json,我已经修改了它,现在json中的所有键都有双引号{“header”:[{“doc_no”:“DN00001”}}。太好了!,但是如果你读了我的问题,我也尝试了获取JSONArray(“header”),但运气不好,这是一个好的指针…@gath dude,你需要像#1一样修复你的JSON字符串。如果您想