我的目标是验证从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对象
答案 0 :(得分:1)
我可以建议您使用Gson库吗? 您可以使用类似这样的东西。但是,如果json不匹配/包含字段,它将引发异常。
Type listType = new TypeToken<ArrayList<YourJavaClassJsonModel>>() {
}.getType();
List<YourJavaClassJsonModel> resultList = gson.fromJson(JsonString, listType);
希望这会有所帮助
答案 1 :(得分:1)
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
答案 2 :(得分:0)