使用io.circe转换JSON值

时间:2017-08-15 23:25:12

标签: json scala

我在scala中有一个转换值并生成字符串的函数。

strOut = translate(strIn)

假设以下JSON对象:

{
  "id": "c730433b-082c-4984-3d56-855c243265f0",
  "standard": "stda",
  "timestamp": "tsx000",
  "stdparms" : {
    "stdparam1": "a",
    "stdparam2": "b"
  }
}

以及翻译函数提供的以下映射:

"stda" -> "stdb"
"tsx000" -> "tsy000"
"a" -> "f"
"b" -> "g"

使用translate函数翻译整个JSON对象的最佳方法是什么?我的目标是获得以下结果:

{
  "id": "c730433b-082c-4984-3d56-855c243265f0",
  "standard": "stdb",
  "timestamp": "tsy000",
  "stdparms" : {
    "stdparam1": "f",
    "stdparam2": "g"
  }
}

由于项目相关事宜,我必须使用io.circe库。

1 个答案:

答案 0 :(得分:0)

如果您事先知道要翻译哪些字段,或者哪些翻译适用于该字段,则可以使用Cursors遍历JSON树。或者如果字段本身是固定的(您总是知道期望的字段)Optics可能需要更少的代码。

当你到达正确的叶子时,你应用翻译。

但是,如果您不知道在使用字符串方法查找/替换的时间/位置可能适用的内容。

请注意,作为示例提供的JSON顺便说一下,它不是有效的JSON。