如何解析 Json java 中不以逗号分隔的数组
How to parse Json Array not separted by comma in java
我有一个来自 mongodb 导出的 db.json 文件。 json 的结构如下:
{
"item1" : "test",
"item2" : "test",
"item3" : "test"
}
{
"item1" : "string",
"item2" : "string",
"item3" : "string"
}
如您所见,它没有逗号分隔符,也没有格式化为序列化对象的集合。
我正在尝试使用 Jackson 将此 db.json 反序列化为 java class 但显然它只解析第一对括号,因为这在标准 json 格式。要被认可,应该是这样的。
[{
"item1" : "test",
"item2" : "test",
"item3" : "test"
},
{
"item1" : "string",
"item2" : "string",
"item3" : "string"
}]
我无法手动修改 json,因为它有 15GB 的文本。这是我试过的
ObjectMapper mapper = new ObjectMapper();
Table[] tablesFromJSON = mapper.readValue(Paths.get("db.json").toFile(), Table[].class);
我该如何解决这个问题?
导出时需要使用--jsonArray
参数。更多详情 here
有一个 java 库可以将 JSON 字符串转换为 java 对象。 parse/generateJSON你想要的方式很快。 configure/validate JSON 每个级别。
请参考 Quick- Json Lib https://code.google.com/p/quick-json/ 有很好的例子和解释。
可能这会对你有所帮助。
Table[] tablesFromJSON = mapper.readValue
您的机器是否安装了 ~64GB 的 RAM?因为否则,显然,任何尝试将这个特技与 15GB .json
文件相比较都将花费很长时间,然后用 OutOfMemoryError
搞砸。
因此我非常怀疑你是否真的想要你看起来想要的东西。
相反,您想流式传输此数据。拿 InputStream
,使用一些 JSON 库从流中读取 one json 对象,在 java 代码中处理这个对象, 和 not 通过将它存储在一个巨大的 ArrayList
或 HashMap
或者什么不是 - 在某种程度上它可以在之后被垃圾收集,然后阅读一些流中的更多字节,刚好足够下一个对象,依此类推。
因此:就是你想要的。
我有一个来自 mongodb 导出的 db.json 文件。 json 的结构如下:
{
"item1" : "test",
"item2" : "test",
"item3" : "test"
}
{
"item1" : "string",
"item2" : "string",
"item3" : "string"
}
如您所见,它没有逗号分隔符,也没有格式化为序列化对象的集合。
我正在尝试使用 Jackson 将此 db.json 反序列化为 java class 但显然它只解析第一对括号,因为这在标准 json 格式。要被认可,应该是这样的。
[{
"item1" : "test",
"item2" : "test",
"item3" : "test"
},
{
"item1" : "string",
"item2" : "string",
"item3" : "string"
}]
我无法手动修改 json,因为它有 15GB 的文本。这是我试过的
ObjectMapper mapper = new ObjectMapper();
Table[] tablesFromJSON = mapper.readValue(Paths.get("db.json").toFile(), Table[].class);
我该如何解决这个问题?
导出时需要使用--jsonArray
参数。更多详情 here
有一个 java 库可以将 JSON 字符串转换为 java 对象。 parse/generateJSON你想要的方式很快。 configure/validate JSON 每个级别。
请参考 Quick- Json Lib https://code.google.com/p/quick-json/ 有很好的例子和解释。
可能这会对你有所帮助。
Table[] tablesFromJSON = mapper.readValue
您的机器是否安装了 ~64GB 的 RAM?因为否则,显然,任何尝试将这个特技与 15GB .json
文件相比较都将花费很长时间,然后用 OutOfMemoryError
搞砸。
因此我非常怀疑你是否真的想要你看起来想要的东西。
相反,您想流式传输此数据。拿 InputStream
,使用一些 JSON 库从流中读取 one json 对象,在 java 代码中处理这个对象, 和 not 通过将它存储在一个巨大的 ArrayList
或 HashMap
或者什么不是 - 在某种程度上它可以在之后被垃圾收集,然后阅读一些流中的更多字节,刚好足够下一个对象,依此类推。
因此: