gpt4 book ai didi

java - Scala 的 JSON 库无法正常工作

转载 作者:行者123 更新时间:2023-12-02 03:40:34 26 4
gpt4 key购买 nike

我有我的 Apache Flink 程序:

import org.apache.flink.api.scala._
import scala.util.parsing.json._

object numHits extends App {
val env = ExecutionEnvironment.getExecutionEnvironment
val data=env.readTextFile("file:///path/to/json/file")
val j=data.map { x => ("\"\"\""+x+"\"\"\"") }
/*1*/ println( ((j.first(1).collect())(0)).getClass() )

/*2*/ println( ((j.first(1).collect())(0)) )

/*3*/ println( JSON.parseFull((j.first(1).collect())(0)) )
}

我想将输入 JSON 文件解析为普通的 scala Map,为此我使用默认的 scala.util.parsing.json._ 库。

第一个println语句的输出是JSON解析函数所需的class java.lang.String

第二个 println 函数的输出是附加了 "\"\"\"" 的实际 JSON 字符串,这也是 JSON 解析器所需要的。

现在,如果我复制控制台中打印的第二个 println 命令的输出并将其传递给 JSON.parseFull() 函数,它会正确解析它。

因此,第三个 println 函数应该正确解析传递给它的相同字符串,但它没有正确解析,因为它输出“None”字符串,这意味着它失败了。

为什么会发生这种情况以及如何让它发挥作用?

最佳答案

Output of the second println function is the actual JSON string appended and prepended by "\"\"\"" which is also required by the JSON parser.

不,当然不是。这会生成一个类似于 """{}""" 的字符串,它不是有效的 JSON,并且会被解析器正确拒绝。当您在 Scala 代码中编写 """{}""" 时,引号不是字符串本身的一部分,它们只是分隔文字:字符串的内容是 {} ,这是有效的 JSON。

关于java - Scala 的 JSON 库无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36886644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com