如何解析没有名称的多个json对象

时间:2013-08-12 02:07:53

标签: java android regex json

我在解析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应用程序中。

3 个答案:

答案 0 :(得分:1)

从您发布的链接看,对象之间(以及仅在对象之间)有新行。如果那是对的,我会这样做:

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

这会将数据拆分为换行符,然后将它们与元素和括号之间的逗号连接在一起。

答案 1 :(得分:1)

这是一个如何使用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>> () { });

希望这有帮助!

答案 2 :(得分:0)

JSONObject jObject = null;

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

这将获得json对象。

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

JSONArray jsonImageArray = jObject.getJSONArray(“your string”);