【问题标题】:how to parse multiple json objects with no name如何解析多个没有名称的json对象
【发布时间】:2013-08-13 06:32:08
【问题描述】:

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

【问题讨论】:

  • 你试过JSON.parse("your string");
  • 应该返回jsonobject还是jsonarray?
  • 我使用org.codehaus.jettison.json.JSONObject,它可以工作。将字符串传递给JSONObject 构造函数。 JSONObject 类提供了一个 Iterator 的键,您可以使用它们来获取值。
  • Android Studio 似乎无法解析“JSON”
  • 所有对象都以换行符结尾吗?

标签: java android regex json


【解决方案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】:

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

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

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

    【讨论】:

    • 这可能是最实用的方法。但是,最好的方法是让 Web API 返回一个格式良好的 JSON 对象 JSON 数组。
    • @StephenC - 我同意让 Web API 正常运行。如果你要求 JSON,它应该返回有效的 JSON,而不是一些看起来像 JSON 但不解析的垃圾。
    【解决方案3】:

    JSONObject jObject = null;

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

    这将为您获取 json 对象。

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

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

    【讨论】:

    • 是的,我知道这一点,但我无法从中制作一个对象,因为有多个。
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2019-10-26
    • 2023-02-03
    • 2021-11-24
    • 1970-01-01
    • 2014-09-24
    • 2015-01-20
    • 2020-08-09
    相关资源
    最近更新 更多