我需要分析和安全检查数据集,假设使用相同的格式。例如,所有数据集应如下所示:
{
"firstValue":0,
"firstElement": {
"secondValue":1,
"array": [
{
"thirdValue": 2,
"secondElement": {
"fourthValueOne": 3,
"fourthValueTwo": 4
}
}
{
"thirdValue": 5,
"secondElement": {
"fourthValueOne": 6,
"fourthValueTwo": null
}
}
]
}
}
假设所有字段始终存在 - 如果未指定某些数据,则相应字段的值仅为" null",例如:所有数据集包含" secondValue",但它可能为null。另一个例子:所有数据集都包含" array",但列表可能为空。第三个例子:如果数据集包含" array"中的元素,则该元素包含" thirdValue"和" secondElement",而" secondElement"包含" fourthValueOne"和" fourthValueTwo"。
简而言之,下面的代码应始终用于检索任何数据集中的所有数据(将其视为伪代码,而不是实际代码):
JsonNode root = builtHere();
JsonNode firstValueNode = root.get("firstValue");
JsonNode firstElementNode = root.get("firstElement");
JsonNode secondValueNode = firstElementnode.get("secondValue");
JsonNode arrayNode = firstElementnode.get("array");
for (JsonNode arrayElement : arrayNode) {
JsonNode thirdValueNode = arrayElement.get("thirdValue");
JsonNode secondElementNode = arrayElement.get("secondElement");
JsonNode fourthValueOne = secondElementNode.get("fourthValueOne");
JsonNode fourthValueTwo = secondElementNode.get("fourthValueTwo");
}
这当然是一个非常简单的例子。我使用的真实数据集更大,更复杂,有嵌套列表等。
我需要做的是分析所有数据,这意味着从json树中提取所有数据并检查json树是否实际遵循数据集格式(例如" secondValue"总是必须存在。)
我可以在示例代码中执行上面的操作来提取数据,并检查每个字段是否存在,例如root.has(" firstValue"),但这似乎是一种非常丑陋的方式,特别是在迭代嵌套循环时。
有关如何以更智能的方式解决这个问题的任何建议吗?
其他问题:如何使用JsonNode获取从当前JsonNode到root的路径,例如/ firstElement /阵列/ 0 / secondElement / fourthElementOne?