Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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_Parsing_Stringbuilder - Fatal编程技术网

如何在java中解析多重json值

如何在java中解析多重json值,java,json,parsing,stringbuilder,Java,Json,Parsing,Stringbuilder,我的StringBuilder变量中的json值如下,我想解析所有id键值,并将其再次存储在StringBuilder中 {"status":"success","id":"1"} {"status":"success","id":"2"} {"status":"success","id":"3"} {"status":"success","id":"4"} {"status":"success","id":"5"} {"status":"success","id":"6"} 预期产出: 1.

我的StringBuilder变量中的json值如下,我想解析所有id键值,并将其再次存储在StringBuilder中

{"status":"success","id":"1"}
{"status":"success","id":"2"}
{"status":"success","id":"3"}
{"status":"success","id":"4"}
{"status":"success","id":"5"}
{"status":"success","id":"6"}
预期产出: 1. 2. 3. 4. 5. 六,

如何在java中解析这些值

我尝试了以下选项,但没有帮助:

StringBuilder str = new StringBuilder();
str.append(jsonStringValue);

JSONObject jObj = new JSONObject(str);
jObj.getString("id");
使用JSONTokener

JSONTokener t = new JSONTokener(str.toString());
 while (t.more()) {
JSONObject o2 = (JSONObject) t.nextValue();
System.out.println(o2.getString("id"));
}
但我得到以下错误信息:
org.json.JSONException:字符128处缺少值如果您使用的是org.json,那么可以使用JSONTokener

下面的示例显示了它是如何工作的

public static void main(String args[]) throws JSONException {
    String str1 = "{\"strValue\":\"string\"}\n{\"intValue\":1}";
    JSONTokener t = new JSONTokener(str1);
    JSONObject o1 = (JSONObject) t.nextValue();
    JSONObject o2 = (JSONObject) t.nextValue();
    System.out.println(o1.getString("strValue"));
    System.out.println(o2.getLong("intValue"));
    System.out.println(t.more()); // Check if there's more token. can be used to process with loop.
}
或者,若您可以更改输入字符串,则可以将这些对象放入Json数组中

[
{"status":"success","id":"1"},
{"status":"success","id":"2"},
{"status":"success","id":"3"},
{"status":"success","id":"4"},
{"status":"success","id":"5"},
{"status":"success","id":"6"}
]

在这种情况下,您可以使用org.json.JSONArray来处理它。

您可以像这样使用regexp

public class Test {

public static void main(String[] args) {
    StringBuilder inputBuf = prepareStringBuilder();

    StringBuilder outputBuf = new StringBuilder();

    Pattern pattern = Pattern.compile(":\"(\\d+)\"");
    Matcher matcher = pattern.matcher(inputBuf);
    while (matcher.find()) {
        String group = matcher.group(1);
        outputBuf.append(group);
    }

    System.out.println(outputBuf);
}

private static StringBuilder prepareStringBuilder() {
    StringBuilder buf = new StringBuilder();
    buf.append("{\"status\":\"success\",\"id\":\"1\"}");
    buf.append("{\"status\":\"success\",\"id\":\"2\"}");
    buf.append("{\"status\":\"success\",\"id\":\"3\"}");
    buf.append("{\"status\":\"success\",\"id\":\"4\"}");
    buf.append("{\"status\":\"success\",\"id\":\"5\"}");
    buf.append("{\"status\":\"success\",\"id\":\"6\"}");
    return buf;
}
}

这不是有效的JSON,每一行都是有效的,但整个内容都是notExact-replicate;其中一个:嗨,我试过你的方法,但是我得到了一个异常org.json.JSONException:字符128处缺少值。我已经在原来的帖子中更新了我的代码。。如果我做错了什么事,你能纠正我吗?应该像builder.append(“{\”状态\“:\”成功\“,\”id \“:\”1\”);