Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.json4s._
- import org.json4s.jackson.JsonMethods._
- val a = parse(""" { "id":"6988", "signatories":[ { "fields":[ { "name":"fstname", "value":"Bruce" }, { "name":"sndname", "value":"Lee" }, { "name":"email", "value":"bruce.lee@company.com" }, { "name":"sigco", "value":"Company" }, { "name":"mobile", "value":"0760000000" } ] }, { "fields":[ { "name":"fstname", "value":"" }, { "name":"sndname", "value":"" }, { "name":"email", "value":"" }, { "name":"mobile", "value":"" }, { "name":"sigco", "value":"" } ] } ] } """)
- val v = a.\("signatories").\("fields")(1).transform {
- // Each JArray is made of objects. Find fields in the object with key as name and value as fstname
- case obj: JObject => obj.findField(_.equals(JField("name", JString("fstname")))) match {
- case None => obj //Didn't find the field. Return the same object back to the array
- // Found the field. Change the value
- case Some(x) =>
- obj.transformField { case JField(k, v) if k == "value" => JField(k, JString("New name")) }
- }
- }
- // how do I get the fields[1] into the original JObject "a"
- val merged = a.replace(List("fields"), v)
- // convert back to json
- println(compact(render(merged)))
- /*
- The result I'm getting
- {
- "id": "6988",
- "signatories": [
- {
- "fields": [
- {
- "name": "fstname",
- "value": "Bruce"
- },
- {
- "name": "sndname",
- "value": "Lee"
- },
- {
- "name": "email",
- "value": "[email protected]"
- },
- {
- "name": "sigco",
- "value": "Company"
- },
- {
- "name": "mobile",
- "value": "0760000000"
- }
- ]
- },
- {
- "fields": [
- {
- "name": "fstname",
- "value": ""
- },
- {
- "name": "sndname",
- "value": ""
- },
- {
- "name": "email",
- "value": ""
- },
- {
- "name": "mobile",
- "value": ""
- },
- {
- "name": "sigco",
- "value": ""
- }
- ]
- }
- ]
- }
- */
- /* And here's the result I'm trying to achieve, with the value for "fstname" in the second fields array is set to "New name"
- {
- "id": "6988",
- "signatories": [
- {
- "fields": [
- {
- "name": "fstname",
- "value": "Bruce"
- },
- {
- "name": "sndname",
- "value": "Lee"
- },
- {
- "name": "email",
- "value": "[email protected]"
- },
- {
- "name": "sigco",
- "value": "Company"
- },
- {
- "name": "mobile",
- "value": "0760000000"
- }
- ]
- },
- {
- "fields": [
- {
- "name": "fstname",
- "value": "New name"
- },
- {
- "name": "sndname",
- "value": ""
- },
- {
- "name": "email",
- "value": ""
- },
- {
- "name": "mobile",
- "value": ""
- },
- {
- "name": "sigco",
- "value": ""
- }
- ]
- }
- ]
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement