我有一个流源,它生成许多没有分隔符(或者只有空格)的JSON对象。如果我把它传递给json4s parse函数,它只为第一个对象生成AST。
作为一种变通办法,我可以手动解析它,并通过适当地添加括号和逗号将其转换为JSON数组,或者将其分块并在每个块上调用parse。
但是,这是一个rather common format,所以我确信问题已经解决了。我只是在json4s文档中找不到它的接口。
发布于 2018-02-18 02:41:40
如果从InputStream中读取,则将BufferedInputStream包装器与mark()、read()和reset()调用一起使用,以跳过parse()调用之间的空格:
val in = new BufferedInputStream(new FileInputStream("/tmp/your.json"))
try {
var continue = true
in.mark(1)
do {
in.reset()
// <-- here should be call for parse
// skip white spaces or exit if EOF found
var b = 0
do {
in.mark(1)
b = in.read()
if (b < 0) continue = false
} while (Character.isWhitespace(b))
} while (continue)
} finally in.close()编辑:今天,我发布了0.11.0 version of jsoniter-scala,它具有解析流式JSON值或JSON数组的新功能,不需要在内存中保存所有值。
https://stackoverflow.com/questions/48840291
复制相似问题