Kullandığım bir REST hizmetinden dönen bu JSON'u kullanıyorum. Scala'da json'u ayrıştırma ve değiştirme
{
"id": "6804",
"signatories": [
{
"id": "12125",
"fields": [
{
"type": "standard",
"name": "fstname",
"value": "John"
},
{
"type": "standard",
"name": "sndname",
"value": "Doe"
},
{
"type": "standard",
"name": "email",
"value": "[email protected]"
},
{
"type": "standard",
"name": "sigco",
"value": "Company"
}
]
}
]
}
Şu anda orada farklı nesnelerin özellik "değer" değiştirmek edebilmek için, "alanlar" dizisi üzerinde yineleme, json4s ile bu ayrıştırmak için bir yol araştırıyorum. Şimdiye kadar birkaç json libs denedim ve
json4s ile bitti.
Json4s, json'u "alanlar" dizisini 'dan ayıklayabileceğim bir JObject'e ayrıştırmama izin veriyor.
import org.json4s._
import org.json4s.native.JsonMethods._
// parse to JObject
val data = parse(json)
// extract the fields into a map
val fields = data \ "signatories" \ "fields"
// parse back to JSON
println(compact(render(fields)))
Böyle bir harita çıkarmak başardı ve tekrar JSON geri render ettik. Yine de anlayamadığım şey, bu alanlardan nasıl geçilir ve onların içindeki "değeri" nasıl değiştirilir?
json4s belgelerini okudum, ancak hem Scala hem de sözdizimi konusunda çok yeniyim, bu yüzden zor bir zaman geçiriyorum.
Sorun, "value" özelliğini değiştirmek için ayrıştırılmış bir JSON sonucu üzerinde nasıl yineleyebilirim?
İşte elde etmek istediğim akış.
- Ayrıştırma JSON iterable nesne
- Döngü içine yoluyla ve bazı "adlarıyla" ni bulun ve John başka isme, örneğin fstname için, onların değerini değiştirmek.
- JSON'a geri dönün, böylece yeni JSON'u güncel değerlerle geri gönderebilirim.
Bunu yapmanın en iyi yolu olup olmadığını bilmiyorum, gerçekten girişi takdir ediyorum, belki bunu yapmanın daha kolay bir yolu var. peşin
sayesinde Saygılarımızla,
Stefan Konno
Sen yapmanın en kolay şeydir vaka sınıfının bir diziye json dönüştürebilirsiniz
soru nedir kullanabilirim? – Theolodis
"Bu alanlar arasında nasıl dönülür ve özellik" değerini "değiştirir". Soruyu daha iyi ifade etmek için soruyu düzenleyeceğim, üzgünüm. –
Her zaman seri hale getirme nesnesi olmadan \\ operatörünü kullanabilirsiniz. – bkowalikpl