首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用json4s解析“流式”json对象?

如何用json4s解析“流式”json对象?
EN

Stack Overflow用户
提问于 2018-02-17 18:22:40
回答 1查看 498关注 0票数 2

我有一个流源,它生成许多没有分隔符(或者只有空格)的JSON对象。如果我把它传递给json4s parse函数,它只为第一个对象生成AST。

作为一种变通办法,我可以手动解析它,并通过适当地添加括号和逗号将其转换为JSON数组,或者将其分块并在每个块上调用parse

但是,这是一个rather common format,所以我确信问题已经解决了。我只是在json4s文档中找不到它的接口。

EN

回答 1

Stack Overflow用户

发布于 2018-02-18 02:41:40

如果从InputStream中读取,则将BufferedInputStream包装器与mark()read()reset()调用一起使用,以跳过parse()调用之间的空格:

代码语言:javascript
复制
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数组的新功能,不需要在内存中保存所有值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48840291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档