3

我在解析 json 时遇到了一些麻烦。我有以下格式的json:

{"blah":"blah","blah":"blah"}
{"blah":"blah","blah":"blah"}
{"blah":"blah","blah":"blah"}

这是 JSON 的链接:http ://gerrit.aokp.co/query?format=JSON&q=status:merged&age:1d

我不能把它变成一个 jsonobject 并对其进行迭代。我目前将其作为字符串。

有没有办法迭代这个?将有500多个。

我尝试通过在其周围添加方括号来使其成为一个数组,但它不起作用,因为我需要用逗号将它们分开。我不能手动操作它,因为我是从网上获取的。所以我尝试了这个。

jsonString = jsonString.replaceAll("}(?!,)", "},");

我添加负逗号的原因是有时我可能在这些对象内部有一个 jsonobject,所以我只想在不带逗号的 '}' 前面添加一个逗号。

当我进行替换时,我得到了这个错误。

Error in fetching or parsing JSON: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 1:
    }(?!,)
    ^

我做错了什么,或者有没有更简单的方法可以让我查看?

编辑:哦,是的,我需要在 java 中实现它,因为这是在一个 android 应用程序中。

4

3 回答 3

2

这是一个示例,您可以如何使用 Jackson 的 ObjectMapper 完成您想要的工作。

ObjectMapper om = new ObjectMapper();
try {
    List<Object> obj = om.readValue(yourJsonString, new TypeReference<List<Object>> () { });
} catch (IOException e1) {
    e1.printStackTrace();
}

现在,您将拥有 JSON 字符串中每个单独对象的列表。为了更进一步,您可以为要解析的对象创建一个 POJO。

就像是:

public class MyObject{
    private String project;
    private String branch;
}

这只是一个例子,您需要为每个 json 属性定义一个属性。

然后你可以转:

List<Object> obj = om.readValue(yourJsonString, new TypeReference<List<Object>> () { });

进入

List<MyObject> obj = om.readValue(yourJsonString, new TypeReference<List<MyObject>> () { });

希望这可以帮助!

于 2013-08-12T03:06:34.187 回答
1

从您发布的链接中,看起来对象之间(并且仅在对象之间)有换行符。如果这是正确的,我会这样处理:

String[] items = dataFromWeb.split("\n");
String asJSONArrayString = Arrays.toString(items);
JSONArray jsonArray = new JSONArray(asJSONArrayString);

这会在换行符处拆分数据,然后将其与元素之间的逗号和整个事物的括号连接在一起。

于 2013-08-12T02:31:53.117 回答
0

JSONObject jObject = null;

mJsonString = downloadFileFromInternet(urlString); jObject = new JSONObject(mJsonString);

这将为您提供 json 对象。

这是从 json 对象获取 json 数组的方法:

JSONArray jsonImageArray = jObject.getJSONArray("你的字符串");

于 2013-08-12T02:19:28.647 回答