爲了向後兼容的原因,我正在編寫一個庫來轉換來自API的JSON響應。我需要做的是採取任意的JSON,並改變某些字段名稱。我正在使用scala和argonaut,但我沒有看到文檔中的任何方式或更改FIELD名稱的示例,只有值。在argonaut中轉換JSON字段名稱
3
A
回答
0
我最終摺疊了需要轉換並添加到地圖的對象,然後創建了一個新的json對象。
val conversionMap = Map("a" -> "b")
Json(
j.objectOrEmpty.toMap.foldLeft(Map.empty[JsonField, Json]) {
case (acc, (key, value)) =>
acc.updated(conversionMap.getOrElse(key, key), j.fieldOrNull(key))
}.toSeq: _*
)
1
我不知道的一個特別好的辦法做到這一點,但它不是太可怕了寫一個助手,這將在對象與withObject
更換一個區域,然後使用一個光標:
def renameField(before: JsonField, after: JsonField)(obj: JsonObject) =
obj(before).map(v => (obj - before) + (after, v)).getOrElse(obj)
Parse.parseOption("""{ "a": { "b": { "c": 1 } } }""").flatMap { json =>
(json.hcursor --\ "a").withFocus(_.withObject(renameField("b", "z"))).undo
}
按預期返回Some({"a":{"z":{"c":1}}})
。
相關問題
- 1. AngularJS $資源JSON字段名稱轉換
- 2. 如何在使用argonaut生成JSON時反轉字段順序?
- 3. json獲取字段名稱
- 4. JSON字段名稱空間
- 5. 如何使用Argonaut鏡頭修改數字JSON字段?
- 6. 替換字段名稱
- 7. 如何使用argonaut將json值「aaa,bbb」轉換爲「Seq [String]」?
- 8. 使用屬性名稱中的非法字符轉換JSON
- 9. 轉換變量到JSON值名稱
- 10. 將字符串轉換爲字段名稱
- 11. Java對象到JSON:字段名稱
- 12. Symfony JSON輸出包括字段名稱
- 13. JSON字段具有相同的名稱
- 14. JAX-RS如何將字段名稱作爲Json返回字段名稱
- 15. 如何將JSON字段名稱映射到不同的對象字段名稱?
- 16. 修復壞的Json與字段名稱轉義的報價
- 17. 在Python中替換字段名稱中的特殊字符
- 18. 在geokettle中重命名字段名稱
- 19. 是否有可能在轉換中即時轉換JSON變量名稱?
- 20. 用Argonaut解析JSON流
- 21. 如何將json對象名稱轉換爲字符串格式
- 22. Splunk:在字段轉換中引用字段轉換
- 23. 是。 char允許在JSON字段名稱中?
- 24. 在Groovy中序列化爲JSON時更改字段名稱
- 25. 在JavaScript中解析json數組與未知的字段名稱
- 26. 在Rails響應中更改JSON字段名稱
- 27. Pentaho字段名稱使用預定替代值轉換
- 28. 使用PHPExcel將字段名稱從MySQL轉換爲Excel
- 29. 轉換json對象到輸入字段
- 30. 轉換JSON的數組字段列出
因此,如果我正確地閱讀,它看起來像我必須事先知道JSOn的結構,我不一定。我只想重命名「a」到「b」(大致)的任何字段。我想出了一個解決方案,但同樣不好。 – Falmarri