我的目标是验证从 RabbitMQ 获得的某些 JSON 是否对应于单个文件中数组中的预期 JSON 之一。
换句话说,我需要验证这个 JSON:
{
"networkCode":"network",
"programId":"92000"
}
存在于此 JSON 数组中:
[
{
"networkCode":"network",
"programId":"92000"
},
{
"networkCode":"network",
"programId":"92666"
}
]
非常感谢您的帮助!
我的代码的某些部分
//GET DESIRABLE JSON
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
JSONObject myJSON= new JSONObject(message);
//GET THE JSON ARRAYS FROM FILE
JSONParser parser = new JSONParser();
Object expectedJSONs= parser.parse(new FileReader("C:\\amqpclient\\src\\test\\java\\tradeDoubler\\ExpectedDTO.json"));
JSONArray expectedArray = (JSONArray) expectedJSONs;
JSONAssert.assertEquals(
myJSON, expectedArray , JSONCompareMode.LENIENT);
编译说无法解决这个问题
线程“main”java.lang.AssertionError 中出现异常:需要 JSON 数组,但传入 JSON 对象
最佳答案
Org.json库非常容易使用。
示例代码如下:
import org.json.*;
JSONObject obj = new JSONObject(" yourJSONObjectHere ");
JSONArray arr = obj.getJSONArray("networkArray");
for (int i = 0; i < arr.length(); i++)
{
String networkCode = arr.getJSONObject(i).getString("networkCode");
......
}
通过迭代 JSONArray,您可以检查每个对象是否等于您的搜索。
您可以从以下位置找到更多示例:Parse JSON in Java
关于java - 在 JSON 数组中查找 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56494725/