2016-06-06 28 views
0

我有一个文件列表,用它可以添加到一个JSON对象分别字段和值在Map[String, Any]的形式,以便数据。所以,我的代码解析的时候看起来是这样的:添加从地图值到JSON各个领域斯卡拉

val JsonDoc = Json.obj(
     "ORFID" -> doc("ORFID").toString, 
     "ORF_len" -> doc("ORF_len").toString, 
     "start" -> doc("start").toString, 
     "end" -> doc("end").toString 
...// more fields 
) 

然而,一些文件可能丢失的领域之一,所以我需要一个更加动态的方法取决于每个文件的字段,否则会抛出异常。对此最好的方法是什么?

+0

有'Any'作为'Map'的值类型是不是一个很好的主意 – cchantep

回答

2

你可以尝试JsObject代替。它的构造函数需要元组,你可以从你的地图获得与方法toSeq,这个假设,你要使用相同的密钥在您的JSON作为地图的序列。

val jsonDoc = new JsonObj(doc.toSeq) 
+0

不幸的是,它的地图(字符串,任意)和所需的打字(字符串,JsValue),我使出在可能为空的字段上使用getOrElse以避免错误 –