Java 在某些节点(而不是所有节点)的数组中解析JSON数组
我有一个包含嵌套JSON数组的JSON响应,我想对其进行解析。 这是一个非常直截了当的JSON响应,但有一点变化。 我得到的响应被构造为一个JSONarray,该数组中有少量值。在某些元素中,该值包含一个嵌套的JSONarray,并具有另一组数据 现在,解析这个JSON非常简单,我能够以正确的顺序获取数据 这是一个JSON示例(如果格式不正确,请道歉-这只是一个示例):Java 在某些节点(而不是所有节点)的数组中解析JSON数组,java,android,json,Java,Android,Json,我有一个包含嵌套JSON数组的JSON响应,我想对其进行解析。 这是一个非常直截了当的JSON响应,但有一点变化。 我得到的响应被构造为一个JSONarray,该数组中有少量值。在某些元素中,该值包含一个嵌套的JSONarray,并具有另一组数据 现在,解析这个JSON非常简单,我能够以正确的顺序获取数据 这是一个JSON示例(如果格式不正确,请道歉-这只是一个示例): { "responseCode": "200", "responseMessage": "OK", "
{
"responseCode": "200",
"responseMessage": "OK",
"value_set":
[
{
"sample": "value",
"sample1": "value1",
"sample2": "value2",
"sample3": "value3",
"sample4": "value4",
"sample5": "value5"
},
{
"sample": "value",
"sample1": "value1",
"sample2": "value2",
"sample3": "value3",
"sample4": "value4",
"sample5": "value5"
},
{
"sample": "value",
"sample1": "value2",
"new_sample_data":
[
{
"abc": "some_value",
"def": "some_value1",
"ghi": "some_value2",
"jkl": "some_value3",
"unique_data": "some_unique_value"
},
],
},
{
"sample": "value",
"sample1": "value1",
"sample2": "value2",
"sample3": "value3",
"sample4": "value4",
"sample5": "value5"
},
],
}
现在,为了分析整个事情,我是这样做的:
JSONArray jsonArray = responseObject.getJSONObject().getJSONArray("value_set");
for(int i=0;i<jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
if(object!=null){
String sampleString = object.getString("sample");
String sampleString1 = object.getString("sample1");
//Till this point, the values are ok.
}
}
JSONArray-JSONArray=responseObject.getJSONObject().getJSONArray(“值集”);
对于(int i=0;i您可以使用has
方法JSONObject
例如:
如果这个格式是固定的,那么你必须设置如下条件
JSONArray jsonArray = responseObject.getJSONObject().getJSONArray("value_set");
for(int i=0;i<jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
if(object!=null){
String sampleString = object.getString("sample");
String sampleString1 = object.getString("sample1");
if(i==2) {
JSONArray jsonArrayNewSampleData = responseObject.getJSONObject().getJSONArray("new_sample_data");
}
//Till this point, the values are ok.
}
}
JSONArray-JSONArray=responseObject.getJSONObject().getJSONArray(“值集”);
对于(int i=0;i,因为新的样本数据JSONArray
在值集的每个JSONObject中都不可用
使用并检查new\u sample\u data
键是否在当前JSONObject中可用。如果可用,则以与当前对value\u set
JSONArray相同的方式从new\u sample\u data
JSONArray获取所有值:
if(object.has("new_sample_data")){
if(!object.isNull("new_sample_data")){
// get JSONObject's from JSONArray
}
}
JSONArray-JSONArray=responseObject.getJSONObject().getJSONArray(“值集”);
对于(int i=0;i原因为否决投票!!lol您可以检查,如果JsonObject的长度=6,这意味着它不包含数组,否则包含数组所以检查“{”和“[”…但是还有其他更有效的方法吗?如果你想自己做,唯一的方法是进行常规检查,因为你不想使用librarylet me write循环。如果节点已修复,将来将很难管理。仍然+1..此解决方案也会起作用
if(object.has("new_sample_data")){
if(!object.isNull("new_sample_data")){
// get JSONObject's from JSONArray
}
}
JSONArray jsonArray = responseObject.getJSONObject().getJSONArray("value_set");
for(int i=0;i<jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
if (object.length == 6){
if(object!=null){
String sampleString = object.getString("sample");
String sampleString1 = object.getString("sample1");
....
}
}
else{
if(object!=null){
String sampleString = object.getString("sample");
String sampleString1 = object.getString("sample1");
//parse array new_sample_data
}
//Till this point, the values are ok.
}
}