我有一个JSON文本,我应该解析,但由于某种原因我无法解析它,因为它内部有另一个数组。我的JSON看起来像这样:
{
"statementId": "1",
"movements": [
{
"id": 65,
"date": "2019-02-05",
"number": 32,
"balance": -4.62,
"purpose": "1"
},
{
"id": 1,
"date": "2019-02-05",
"number": 22,
"balance": -3,
"purpose": "23"
},
{
"id": 32,
"date": "2019-02-05",
"number": 12,
"balance": -11,
"purpose": "2"
}
],
"startPointer": "1122",
"endPointer": "3333"
}
我正在使用JsonSlurper。我想知道是否有可能捕获“运动”中的所有数据,我试图使用这个脚本:
JsonSlurper slurper = new JsonSlurper()
Map parsedJson = slurper.parseText(bodyContent)
String parsed_movements = parsedJson["movements"]
解析单个字符串没有问题,比如statementId或startPointer,但是当我尝试使用我的脚本解析运动时,它会将结果显示为null。我也尝试过parsedJson [“moves”] [0]来捕捉第一个动作,但它也给了我一个错误。
我已经在互联网上找到了很多关于json解析器的东西,也发现了堆栈溢出,但我找不到什么。我真的不认为这是一个重复的问题。
编辑:我试图声明也将每个对象放在数组中:def movements_array = []
for(def i = 0; i < parsedJson.movements.size(); i++) {
movements_array << parsedJson.movements[i].id
println(movements_array)
}
但是它给了我一个错误:无法在null对象上调用方法size(),因为parsedJson.movements为null。
当你这样做时:
String parsed_movements = parsedJson["movements"]
你将地图粘贴到一个字符串中,这不是你想要的。
鉴于你问题中的json,你可以做到
def movementIds = new JsonSlurper().parseText(bodyContents).movements.id
获取[65, 1, 32]
列表
如果您正在获得NPE,我认为json不是您在问题中显示的内容