Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala中将字符串转换为简单的JSON_Json_String_Scala - Fatal编程技术网

在scala中将字符串转换为简单的JSON

在scala中将字符串转换为简单的JSON,json,string,scala,Json,String,Scala,我在scala中有一个字符串,就格式而言,它是一个json,例如 {"name":"John", "surname":"Doe"} 但当我生成这个值时,它实际上是一个字符串。我需要将此字符串转换为json,但无法更改源代码的输出。那么如何在Scala中进行这种转换呢?(我不能使用Play Json库。)您可以使用scala.util.parsing.Json将字符串格式的Json转换为Json(基本上是HashMapdatastructure) 例如 要浏览json格式 scala> j

我在scala中有一个字符串,就格式而言,它是一个json,例如

{"name":"John", "surname":"Doe"}

但当我生成这个值时,它实际上是一个字符串。我需要将此字符串转换为json,但无法更改源代码的输出。那么如何在Scala中进行这种转换呢?(我不能使用Play Json库。)

您可以使用
scala.util.parsing.Json
将字符串格式的Json转换为Json(基本上是
HashMap
datastructure)

例如

要浏览json格式

scala> json match { case Some(jsonMap : Map[String, Any]) => println(jsonMap("name")) case _ => println("json is empty") }
John
嵌套的json示例

scala> val userJsonString = """{"name":"John", "address": { "perm" : "abc", "temp" : "zyx" }}"""
userJsonString: String = {"name":"John", "address": { "perm" : "abc", "temp" : "zyx" }}

scala> val json = JSON.parseFull(userJsonString)
json: Option[Any] = Some(Map(name -> John, address -> Map(perm -> abc, temp -> zyx)))

scala> json.map(_.asInstanceOf[Map[String, Any]]("address")).map(_.asInstanceOf[Map[String, String]]("perm"))
res7: Option[String] = Some(abc)

您可以使用
scala.util.parsing.json
将字符串格式的json转换为json(基本上是
HashMap
datastructure)

例如

要浏览json格式

scala> json match { case Some(jsonMap : Map[String, Any]) => println(jsonMap("name")) case _ => println("json is empty") }
John
嵌套的json示例

scala> val userJsonString = """{"name":"John", "address": { "perm" : "abc", "temp" : "zyx" }}"""
userJsonString: String = {"name":"John", "address": { "perm" : "abc", "temp" : "zyx" }}

scala> val json = JSON.parseFull(userJsonString)
json: Option[Any] = Some(Map(name -> John, address -> Map(perm -> abc, temp -> zyx)))

scala> json.map(_.asInstanceOf[Map[String, Any]]("address")).map(_.asInstanceOf[Map[String, String]]("perm"))
res7: Option[String] = Some(abc)

如果你有字符串作为

{"name":"John", "surname":"Doe"}
如果您想保存到前面提到的
elastic
,那么应该使用
parseRaw
而不是
parseFull

parseRaw
将返回您
JSONType
parseFull
将返回您
map

你可以做如下事情

import scala.util.parsing.json._

val jsonString = "{\"name\":\"John\", \"surname\":\"Doe\"}"
val parsed = JSON.parseRaw(jsonString).get.toString()
然后使用
jsonToEs
api作为

sc.makeRDD(Seq(parsed)).saveJsonToEs("spark/json-trips")
已编辑 正如@Aivean所指出的,当您已经从源代码中获得了json字符串时,您就不需要转换为json,只需这样做即可

if jsonString is {"name":"John", "surname":"Doe"}
sc.makeRDD(Seq(jsonString)).saveJsonToEs("spark/json-trips")

如果你有字符串作为

{"name":"John", "surname":"Doe"}
如果您想保存到前面提到的
elastic
,那么应该使用
parseRaw
而不是
parseFull

parseRaw
将返回您
JSONType
parseFull
将返回您
map

你可以做如下事情

import scala.util.parsing.json._

val jsonString = "{\"name\":\"John\", \"surname\":\"Doe\"}"
val parsed = JSON.parseRaw(jsonString).get.toString()
然后使用
jsonToEs
api作为

sc.makeRDD(Seq(parsed)).saveJsonToEs("spark/json-trips")
已编辑 正如@Aivean所指出的,当您已经从源代码中获得了json字符串时,您就不需要转换为json,只需这样做即可

if jsonString is {"name":"John", "surname":"Doe"}
sc.makeRDD(Seq(jsonString)).saveJsonToEs("spark/json-trips")

我的字符串在变量ex.
val entry=
中。如何在parsefull中解析变量条目?你是说变量ex中有字符串。你是说字符串存储在一个变量中,而不是像示例中那样硬编码?对不起,对于ex,我指的是示例。但是是的,字符串不是硬编码的,我从源代码中获取,它们存储在某个变量中,我必须将这个变量转换成json。抱歉,我说得不太清楚。那么只需执行
JSON.parseFull(您的_变量)
,还是我遗漏了什么??请看我的第二个示例,其中我也使用了变量。它运行正常,但输出类型为Option[Any],这是我的其他方法不接受的。我需要一个合适的json类型:(我把我的字符串放在变量ex中。
val entry=
。我如何在parsefull中像那样解析我的变量条目?你是说变量ex中有字符串。你是说你的字符串存储在一个变量中而不是像示例中那样硬编码的吗?对不起,对于ex,我是指示例。但是,字符串不是硬编码的,我是从一个源代码,它们存储在某个变量中,我必须将此变量转换为json。抱歉,我没有说得太清楚。然后简单地执行
json.parseFull(您的_变量)
,或者我遗漏了什么?请看我的第二个示例,其中我也使用了变量。它运行正常,但输出类型是Option[Any],这是我的其他方法不接受的。我需要一个正确的json类型:(我对你的问题感到非常困惑。你有一个JSON字符串,但你的客户端API不接受它?我对你的问题感到非常困惑。你有一个JSON字符串,但你的客户端API不接受它?解析JSON然后将其呈现回字符串有什么意义?似乎OP应该从他的origi创建一个RDDnal字符串并调用
saveJsonToEs
。解析Json然后将其呈现回字符串有什么意义?OP似乎应该从其原始字符串创建一个RDD并调用
saveJsonToEs