考虑以下数据集:
[
{
"_id": 1234,
"bagnumber": "A",
"bagtype": "coin"
},
{
"_id": 2345,
"bagnumber": "B",
"bagtype": "cash"
},
{
"_id": 3456,
"bagnumber": "C",
"bagtype": "coin"
},
{
"_id": 5678,
"bagnumber": "D",
"bagtype": "cash"
}
]
我需要提取并打印仅包含袋子类型“现金”的袋子号码。因此,所需的输出应该是:
Bag numbers are: B, D
我尝试首先使用列表提取行李号:
List<String> bagNumbers = response.jsonPath().getList("bagnumber");
随后,我尝试使用相同的列表检索行李类型,并尝试比较两个列表。然而,我的尝试没有成功,可能表明方法过于复杂。
有人可以建议一个更有效的解决方案吗?也许利用 Matchers 类或任何其他合适的方法将受到赞赏。
我建议使用 Gson 或 Jackson 进行 Json 处理。
如果输入是字符串,则使用以下方法将其转换为 JsonArray:
JsonArray jsonData = new Gson().fromJson(jsonString, JsonArray.class);
创建一个包含结果的列表:
List<String> listBadCashNumber =new ArrayList<>();
开始迭代数组:
for(int i = 0;i<jsonData.size();i++){
JsonObject bag = jsonData.get(i).getAsJsonObject();// Because each element off array is a object
if(bag.get("bagtype").getAsString().equals("cash")){ // Compare the field 'bagtype', you should handle the null if needed
listBadCashNumber.add(bag.get("bagnumber").getAsString()); // Add to result list
}
}
System.out.println("Bag numbers are: "+listBadCashNumber);
结果是:
Bag numbers are: [B, D]