2013-12-15 3 views
0

형제 속성을 기반으로하는 스칼라 리프트를 사용하여 아래 json을 어떻게 변환합니까? 첫째 찾기)스카 리프트를 사용하여 json을 어떻게 변환합니까?

1 : 아래의 JSON에서 , 나는 "값"의 값을 인코딩 할 속성은 속성 "유형을"형제 "를 HTML"

여기
val json = """ 
{ 
    "id" : "1B23423B", 
    "payload" : { 
     "list" : [ { 
      "name" : "test", 
      "data" : [ { 
       "value" : "Some html", 
       "type" : "html", 
      }, { 
       "value" : "some text", 
       "type" : "text" 
      }] 
     }] 
    } 
} 
""" 
def encode(s:String):String = s + "encoded" 
val newjson = js.transform { 
    case x if x == JField("type",JString("html")) => // somehow encode value?? 
} 

println(newjson) 

답변

2

이 가능한 솔루션에있는 경우 형 HTML

2) 변환 JSON 값 자녀

val parsed = JsonParser.parse(jsonString) 

    def encode(s:String):String = s + "encoded" 

    private def encodeValue(dataObject: JValue) = dataObject.transform{ 
    case JField("value", JString(value)) => JField("value", JString(encode(value))) 
    } 

    val newJson = parsed.transform({ 
    case dataObject @ JObject(fields) if fields.contains(JField("type", JString("html"))) => encodeValue(dataObject) 
    }) 
+0

와 데이터 JSON은 위대한 작품! 감사! –