Java 解析具有多个Json元素且不带逗号分隔的字符串

Java 解析具有多个Json元素且不带逗号分隔的字符串,java,json,Java,Json,我有一个字符串,比如: {"personId":"p-111","itemId":"i-111"}{"personId":"p-222","itemId":"i-222"}{"personId":"p-333","itemId":"i-333"} 我的目标是: ItemPurchase { String personId, String itemId } 如何从上面给出的字符串中获取ItemPurchase POJO列表 我无法使用Jackson获取列表,因为在开始和结束处没

我有一个字符串,比如:

{"personId":"p-111","itemId":"i-111"}{"personId":"p-222","itemId":"i-222"}{"personId":"p-333","itemId":"i-333"}
我的目标是:

ItemPurchase {
    String personId,
    String itemId
}
如何从上面给出的字符串中获取ItemPurchase POJO列表

我无法使用Jackson获取列表,因为在开始和结束处没有逗号分隔,也没有[]括号来表示它是一个Json数组。

声明:

请注意,以前的某些JSON规范将JSON文本约束为对象或数组

看起来您的JSON解析器不需要一堆对象,除非它们位于数组或容器对象中

也许你可以升级(或切换)你的解析器,或者让制作人编写RFC4627兼容的JSON,或者使用@ApceH伪君子的解决方法,添加封闭的方括号并插入逗号,以形成合法的JSON数组。

如果设置正确,制作人可以处理这种输入。使用:


您是否尝试在字符串周围添加
[]
并将
“}{
替换为
“},{
”?请尝试使用Gson库
public class Main {
  public static class ItemPurchase {
    public String name;
  }

  public static void main(String[] args) {
    Gson gson = new Gson();
    String input = "{\"name\":\"John\"}{\"name\":\"Jack\"}{}"; 
    Reader reader = new StringReader(input);
    JsonReader json = new JsonReader(reader);
    json.setLenient(true);
    ItemPurchase item0 = gson.fromJson(json, ItemPurchase.class);
    ItemPurchase item1 = gson.fromJson(json, ItemPurchase.class);
    ItemPurchase item2 = gson.fromJson(json, ItemPurchase.class);

    System.out.println(item0.name); // John
    System.out.println(item1.name); // Jack
    System.out.println(item2.name); // null
  }
}