解析JSON到对象的Java/Groovy的
问题描述:
我有以下JSON这种格式:解析JSON到对象的Java/Groovy的
[
["Rio Branco", "1200401", "MU", "01392", "Acre", "AC",
["PSB", "Marina Silva", 115594, 58.34, "N"],
["PSDB", "A\u00e9cio Neves", 44676, 22.55, "N"],
["PT", "Dilma", 35802, 18.07, "N"],
["PSOL", "Luciana Genro", 648, 0.33, "N"],
["PSC", "Pastor Everaldo", 520, 0.26, "N"],
["PV", "Eduardo Jorge", 346, 0.17, "N"],
["PRTB", "Levy Fidelix", 332, 0.17, "N"],
["PSDC", "Eymael", 155, 0.08, "N"],
["PSTU", "Z\u00e9 Maria", 39, 0.02, "N"],
["PCB", "Mauro Iasi", 25, 0.01, "N"],
["PCO", "Rui Costa Pimenta", 6, 0.0, "N"]
]
]
如何可以解析此JSON无需钥匙的名字呢? Java代码或groovy/grails代码。
我做到这一点...
def lista = new JsonSlurper().parseText(new File(jsonfilename).text)
lista.each {
//here I want to read the properties of son, but how can I without the key name??
}
答
您需要通过索引引用的每个字段。我建议将每个字段分配给一个地图,这将使它更容易使用:
json =''' [
["Rio Branco", "1200401", "MU", "01392", "Acre", "AC",
["PSB", "Marina Silva", 115594, 58.34, "N"],
["PSDB", "A\u00e9cio Neves", 44676, 22.55, "N"],
["PT", "Dilma", 35802, 18.07, "N"],
["PSOL", "Luciana Genro", 648, 0.33, "N"],
["PSC", "Pastor Everaldo", 520, 0.26, "N"],
["PV", "Eduardo Jorge", 346, 0.17, "N"],
["PRTB", "Levy Fidelix", 332, 0.17, "N"],
["PSDC", "Eymael", 155, 0.08, "N"],
["PSTU", "Z\u00e9 Maria", 39, 0.02, "N"],
["PCB", "Mauro Iasi", 25, 0.01, "N"],
["PCO", "Rui Costa Pimenta", 6, 0.0, "N"]
]
]'''
def result = new groovy.json.JsonSlurper().parseText json collect { uf ->
[
capital : uf[0],
state: uf[4],
candidates : uf[6..-1].collect { candidate ->
[
party : candidate[0],
name : candidate[1]
]
}
]
}
assert result[0].capital == "Rio Branco"
assert result[0].state == "Acre"
assert result[0].candidates[0].name == "Marina Silva"
assert result[0].candidates[4].party == "PSC"
这个JSON文档结构是恶梦的东西。 – rmlan
任何线索?@rmlan –
当然。做一些研究,写一些代码,并在有特定问题时回来。本网站不是用于转储JSON文档,并要求我们为您编写解析器。 – rmlan