我有一个 json
具有复杂的结构。像这样的东西:
{
"a":"aa",
"b":"bb",
"c":[
"aaa",
"bbb"
],
"d":{
"e":"ee",
"f":"ff"
}
}
我想大写所有字符串值。 The Documentation说:
root.each.string.modify(_.toUpperCase)
但正如预期的那样,只更新了根值。
如何制作
circe-optics
递归遍历所有字符串值?JSON
结构事先未知。这是example在斯卡斯蒂。
通过评论:
我希望所有字符串值都大写,而不仅仅是根值:
{
"a":"AA",
"b":"BB",
"c":[
"AAA",
"BBB"
],
"d":{
"e":"EE",
"f":"FF"
}
}
最佳答案
这是一个部分解决方案,因为它不是完全递归的,但它会解决 json
的问题。从你的例子:
val level1UpperCase = root.each.string.modify(s => s.toUpperCase)
val level2UpperCase = root.each.each.string.modify(s => s.toUpperCase)
val uppered = (level1UpperCase andThen level2UpperCase)(json.right.get)
关于scala - 使用circe-optics递归遍历JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55356876/