Flatten JSON 使用 JsonSlurper 读取
Flatten JSON read with JsonSlurper
正在尝试读取和转换 JSON 文件,其中输入文件包含:
{
"id": “A9”,
"roles": [
{"title": “A”, “type”: “alpha” },
{"title": “B”, “type”: “beta” },
]
},
{
"id": “A10”,
"roles": [
{"title": “D”, “type”: “delta” },
]
},
但需要对期望值处于同一级别的库进行转换:
{
"roles": [
{"id": “A9”, "title": “A”, “type”: “alpha” },
{"id": “A9”, "title": “B”, “type”: “beta” },
]
},
{
"roles": [
{"id": “A10”, "title": “D”, “type”: “delta” },
]
},
我可以使用 JsonSlurper 读取输入,但仍对如何对其进行非规范化感到困惑。
有了这个 data.json
(注意我必须清理尾随逗号,因为 Groovy 的 JSON 解析器不会接受它们):
{
"records":[{
"id": "A9",
"roles": [
{"title": "A", "type": "alpha" },
{"title": "B", "type": "beta" }
]
},
{
"id": "A10",
"roles": [
{"title": "D", "type": "delta" }
]
}]
}
你可以这样做:
def parsed = new groovy.json.JsonSlurper().parse(new File("data.json"))
def records = parsed.records
records.each { record ->
record.roles.each { role ->
role.id = record.id
}
record.remove('id')
}
正在尝试读取和转换 JSON 文件,其中输入文件包含:
{
"id": “A9”,
"roles": [
{"title": “A”, “type”: “alpha” },
{"title": “B”, “type”: “beta” },
]
},
{
"id": “A10”,
"roles": [
{"title": “D”, “type”: “delta” },
]
},
但需要对期望值处于同一级别的库进行转换:
{
"roles": [
{"id": “A9”, "title": “A”, “type”: “alpha” },
{"id": “A9”, "title": “B”, “type”: “beta” },
]
},
{
"roles": [
{"id": “A10”, "title": “D”, “type”: “delta” },
]
},
我可以使用 JsonSlurper 读取输入,但仍对如何对其进行非规范化感到困惑。
有了这个 data.json
(注意我必须清理尾随逗号,因为 Groovy 的 JSON 解析器不会接受它们):
{
"records":[{
"id": "A9",
"roles": [
{"title": "A", "type": "alpha" },
{"title": "B", "type": "beta" }
]
},
{
"id": "A10",
"roles": [
{"title": "D", "type": "delta" }
]
}]
}
你可以这样做:
def parsed = new groovy.json.JsonSlurper().parse(new File("data.json"))
def records = parsed.records
records.each { record ->
record.roles.each { role ->
role.id = record.id
}
record.remove('id')
}