Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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/8/linq/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 如何使用流api在JSONArray中查询基于off-of-key的值_Java_Json_Java Stream - Fatal编程技术网

Java 如何使用流api在JSONArray中查询基于off-of-key的值

Java 如何使用流api在JSONArray中查询基于off-of-key的值,java,json,java-stream,Java,Json,Java Stream,我有一个json数组,其中json对象具有元素id和值。类似于: [ { "id": "123", "value": "test", }, { "id": "223", "value": "test12", } ] 我需要查询JSONArray并找到id=123的值 我尝试了流api,但它给了我未处理的异常:org.JSOn.JSonException” JSONArray jsonRespon

我有一个json数组,其中json对象具有元素id和值。类似于:

[
    {
        "id": "123",
        "value": "test",

    },
    {
        "id": "223",
        "value": "test12",

    }
]
我需要查询JSONArray并找到id=123的值

我尝试了流api,但它给了我未处理的异常:org.JSOn.JSonException”

JSONArray jsonResponse = new JSONArray(response.asString());   
List<JSONObject> jsonItems = IntStream.range(0, jsonResponse.length()).mapToObj(index -> (JSONObject) jsonResponse.get(index)).collect(Collectors.toList());
 jsonItems.forEach(arrayElm -> arrayElm.get("id").equals("123"));

它在“jsonResponse.getindex”和“arrayElm.getid”处给出JSOnexception。

简单的解决方案是创建一个与Json字符串对应的对象。使用Jackson框架将Json字符串转换为对象。每个对象都有id、value和其他参数等字段。最后,您将获得对象的数组。现在迭代每个对象并检查以获得所需的值,或者也可以使用Java8Lambda来查找所需的值。此外,如果您想为json字符串创建一个对象,请遵循以下链接


也许jsonResponse.length应该是jsonResponse.length-1?jsonResponse的大小是2,但我认为索引是1。只有在我能够消除json异常的情况下,这段代码才能工作-IntStream.range0,jsonResponse.length.MapToObjectJSONObject.class::cast.filtero->o.getid.equals123.findFirst;Json异常显示为编译错误,不允许我运行代码最终能够抑制Json异常,但现在缺少返回类型错误:JSONObject jsonItem=IntStream.range0,jsonResponse.length-1.MapToObject JSONObject.class::cast.filtero->{try{return o.getid.equals123;}catch JSONException e{e.printStackTrace;}}}.findFirst;