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
}
}