为了向后兼容的原因,我正在编写一个库来转换来自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