2017-08-15 52 views
0

我在scala中有一个函数可以翻译一个值并产生一个字符串。使用io.circe翻译JSON值

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" 

什么是使用翻译的整个JSON对象的最佳方式翻译功能?我的目标是获得以下结果:

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

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

回答

0

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

当你到了右边的叶子,你应用翻译。

但是,当你不知道什么时候/哪里可能更容易找到/替换使用字符串方法。

请注意,您提供的JSON作为示例顺便说一句是无效的JSON。

+0

感谢您的信息。我纠正了我的JSON示例。我的情况是,预先知道的唯一字段是必须保留的id。 –