Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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
String 如何将数据字符串解析为键值对并将其附加到;把「;方法?_String_Scala_Key Value_Put - Fatal编程技术网

String 如何将数据字符串解析为键值对并将其附加到;把「;方法?

String 如何将数据字符串解析为键值对并将其附加到;把「;方法?,string,scala,key-value,put,String,Scala,Key Value,Put,我有一个数据字符串,希望将其解析为键/值对,然后将其附加到“put”方法,然后编码到GenericRecord。然而,它不起作用,如果能给我一个如何做的提示,我将不胜感激 我将一个字符串转换为字符串列表,但这里似乎只需要两个字符串。如果您有任何关于如何解决这个问题的想法,我将不胜感激 data = "{"name":"John", "surname":"Peterson", "country":"France", “amount”: null}" val parsedData = data.s

我有一个数据字符串,希望将其解析为键/值对,然后将其附加到“put”方法,然后编码到GenericRecord。然而,它不起作用,如果能给我一个如何做的提示,我将不胜感激

我将一个字符串转换为字符串列表,但这里似乎只需要两个字符串。如果您有任何关于如何解决这个问题的想法,我将不胜感激

data = "{"name":"John", "surname":"Peterson", "country":"France", “amount”: null}"

val parsedData = data.split(",").map(x => {val y = x.split(":");(y(0),y(1))}).map(x => (x._1,x._2)).toList  
//此处的输出类型列表[(字符串,字符串)]

//“put”方法的输入-公共void put(字符串键,对象值)

预期结果:要动态追加来自消息的数据,请执行以下操作:

rec.put("name", "John")
rec.put("surname", "Peterson")
rec.put("country", "France")
rec.put(“amount”, null)

我认为这是一种更优雅的方式来满足你的要求

import org.json4s._
import org.json4s.jackson.JsonMethods._

implicit val formats = org.json4s.DefaultFormats

val data = "{"name":"John", "surname":"Peterson", "country":"France", “amount”: null}"
val parsedData: Map[String, String] = parse(data).extract[Map[String, String]]

parsedData.foreach { case (key, value) => rec.put(key, value) }

parsedData.foreach{case(key,value)=>rec.put(key,value)
。感谢您对json工具的帮助和想法!
import org.json4s._
import org.json4s.jackson.JsonMethods._

implicit val formats = org.json4s.DefaultFormats

val data = "{"name":"John", "surname":"Peterson", "country":"France", “amount”: null}"
val parsedData: Map[String, String] = parse(data).extract[Map[String, String]]

parsedData.foreach { case (key, value) => rec.put(key, value) }