2012-07-09 39 views
1

我可以如何輕鬆地轉換數據? 我可以搜索哪些有趣的數據,f。例如:用升降機轉換json

json \\ fieldName1 \\ fieldName2 \\ fieldName3 

但我怎麼能這個搜索修改值? F。前

json transform{ 
    case JField(x,y) => JField(x, z) 
} 
+0

編輯:我試着:從查詢中獲取字段,然後爲每個Jfield調用方法轉換,我檢查當前字段是否來自查詢字段。但是這很醜陋 – user1511848 2012-07-09 12:41:19

+1

你可以使用''extract''(參考lift-json文檔https://github.com/lift/lift/tree/master/framework/lift-base/lift-json/,section 「提取值」),以便將json AST轉換爲一個case類的列表,然後使用通常的收集方法(如filter和map)來完成轉換? – 2012-07-09 13:54:02

回答

1

如果使用lift-json,你得到你想要的東西:

scala> import net.liftweb.json._ 
scala> import net.liftweb.json.JsonDSL._ 

scala> val json = 
    ("person" -> 
    ("name" -> "Joe") ~ 
    ("age" -> 35) ~ 
    ("spouse" -> 
     ("person" -> 
     ("name" -> "Marilyn") ~ 
     ("age" -> 33) 
    ) 
    ) 
) 
scala> json transform { 
     case JField("name", JString(s)) => JField("NAME", JString(s.toUpperCase)) 
     } 
res8: net.liftweb.json.JsonAST.JValue = JObject(List(JField(person,JObject(List(
JField(NAME,JString(JOE)), JField(age,JInt(35)), JField(spouse,JObject(List(
JField(person,JObject(List(JField(NAME,JString(MARILYN)), JField(age,JInt(33))))))))))))) 

以上代碼是從鏈接頁面複製。

如果您不使用lift-json,您可以查看kiama,如this answer中所示。

+0

用於引用Kiama。那個項目很棒! – 2012-07-10 06:57:06