Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证复杂JSON字符串中的每个对象_Java_Json - Fatal编程技术网

Java 验证复杂JSON字符串中的每个对象

Java 验证复杂JSON字符串中的每个对象,java,json,Java,Json,这里需要你的专家建议。所以我有一个复杂的JSON字符串,它有多个Java对象。这是我的JSON字符串。我只列出了一个java对象,但它有很多(每个对象都映射到代码中的一个java类) 我基本上需要验证整个JSON字符串中的一些元素,以确保它们不为null。下面是验证代码- public static String validateJSON(String jsonFile, Object objToValidate) throws JSONException { JSONObj

这里需要你的专家建议。所以我有一个复杂的JSON字符串,它有多个Java对象。这是我的JSON字符串。我只列出了一个java对象,但它有很多(每个对象都映射到代码中的一个java类)

我基本上需要验证整个JSON字符串中的一些元素,以确保它们不为null。下面是验证代码-

public static String validateJSON(String jsonFile, Object objToValidate) throws JSONException {  
        JSONObject myStoreInfo = jsonFileObj.getJSONObject("myStoreInfo");  
        JSONObject jsonObj = null;
            if(myStoreInfo!=null) {          
                if(myStoreInfo.isNull("id"))                
                    return "myStoreInfo info id is null";
                if(myStoreInfo.isNull("address"))
                    return "myStoreInfo address field is null"; 
            jsonObj = myStoreInfo.getJSONObject("partnerInfo");
            if(jsonObj!=null) {
                if(jsonObj.isNull("retailPartner"))
                    return "partner info retail partner is null";
            }
            jsonObj = myStoreInfo.getJSONObject("customerContactInfo");
            JSONObject name = jsonObj.getJSONObject("name");
            if(name!=null) {
                if(name.isNull("firstName"))                
                    return "myStoreInfo first name is null";
                if(name.isNull("lastName"))             
                    return "myStoreInfo last name is null";
            }
            jsonObj = myStoreInfo.getJSONObject("customerContactInfo");
            jsonObj = jsonObj.getJSONObject("contactEmail");
            if(jsonObj==null)               
                    return "myStoreInfo email id is null";
            }
           return null;       
        }
}

如果我正在对一个java对象进行验证,并且我的json文件中只有该java对象,那么这种方法就可以很好地工作。但事实是,我的json文件中有太多的字符串在内部映射到各种java对象。我这里的问题是-我需要能够传递这些对象以单独验证它们。正如您在这里看到的,我的validateJSON将要传递的对象作为参数。如何分割每个对象的JSON字符串,并验证该对象中的所有字段是否正常?

因为该JSON字符串中的数组太多,转换为Java数组列表可能更容易

JSONArray jsonArray = new JSONArray(jsonFile);
for(int i = 0; i < jsonArray.length(); i++){
JSONObject json = (JSONObject)new JSONParser().parse(jsonArray[i]);
//convert to java list
}
JSONArray-JSONArray=新的JSONArray(jsonFile);
for(int i=0;i
您可以使用Java反射遍历反序列化的对象树,并验证所有非原语字段是否为NOTNULL。还有更简单的方法吗?必须有一种方法在每个对应的java对象上拆分JSON字符串,并遍历其元素。这必须是一个常见的用例。我似乎找不到解决方案:(有人吗?使用jackson创建树模型,这样可以更容易地遍历树模型并从空值中搜索。cf
JSONArray jsonArray = new JSONArray(jsonFile);
for(int i = 0; i < jsonArray.length(); i++){
JSONObject json = (JSONObject)new JSONParser().parse(jsonArray[i]);
//convert to java list
}