javascript
java封装对象数组_java解析JSON对象和封装对象的示例
在本例中java解析JSON對象使用的是org.json,因此,如果各位想測試我的代碼,請先確保有java.json.jar包,否則,就需要去網上下載這個jar包,然后才可以正常使用本代碼。
本例的功能就是對兩個json對象,將一個json對象合并到另一個json對象中。注意,這兩個json對象中的key是相同的。
其中,被追加的json對象如下:
{
"className":?"User",
"condition":?[
{
"pro":?"frontNum",
"connector":?"in",
"values":?[
"1",
"2",
"3",
"4"
]
},
{
"pro":?"sex",
"connector":?"!=",
"values":?[
"男",
"女"
]
}
]
}
要合并到上面的json對象中的json為:
[
{
"pro":?"frontNum",
"connector":?"in",
"values":?[
"1",
"2"
]
},
{
"pro":?"sex",
"connector":?"!=",
"values":?[
"人妖"
]
},
{
"pro":?"name",
"connector":?"!=",
"values":?[
"曹操",
"劉備",
"章魚",
"張飛",
"馬超",
"孫武"
]
},
{
"pro":?"home",
"connector":?"!=",
"values":?[
"山東",
"北京",
"河北",
"安徽",
"廣東",
"福建"
]
}
]
注意,上述兩個json字符串僅用于朋友們便于查看它們的結構,測試代碼時不需要拷貝上面的代碼。
下面是處理上述實現要求的代碼。
package?view;
import?org.json.JSONArray;
import?org.json.JSONException;
import?org.json.JSONObject;
public?class?TestUtil?{
public?static?void?main(String[]?args)?throws?JSONException?{
String?endString?=?"{\"className\":?\"User\",\"condition\":?[{\"pro\":?\"frontNum\",\"connector\":?\"in\",\"values\":?[\"1\",\"2\",\"3\",\"4\"]},{\"pro\":?\"sex\",\"connector\":?\"!=\",\"values\":?[\"男\",\"女\"]}]}";
JSONObject?jsonObject?=?new?JSONObject(endString);
String?comString?=?"[{\"pro\":?\"frontNum\",\"connector\":?\"in\",\"values\":?[\"1\",\"2\"]},{\"pro\":?\"sex\",\"connector\":?\"!=\",\"values\":?[\"人妖\"]},{\"pro\":?\"name\",\"connector\":?\"!=\",\"values\":?[\"曹操\",\"劉備\",\"章魚\",\"張飛\",\"馬超\",\"孫武\"]},{\"pro\":?\"home\",\"connector\":?\"!=\",\"values\":?[\"山東\",\"北京\",\"河北\",\"安徽\",\"廣東\",\"福建\"]}]";
JSONArray?jsonArray?=?new?JSONArray(comString);
JSONArray?jsonArray2?=?jsonObject.getJSONArray("condition");
for?(int?i?=?0;?i?
JSONObject?jsonObject2?=?jsonArray.getJSONObject(i);
jsonArray2?=?updateCondition(jsonArray2,?jsonObject2);
}
System.out.println(jsonArray2.toString());
}
/**
*?在類名已經匹配完成的前提下,將從規則類中?取到一個包含列明,連接符,值的對象追加進入JSONarray
*
*?@param?jsonArray
*????????????某個類名下的condition中的數組,被追加的約束的對象
*?@param?comOb
*????????????要追加的對象
*?@return
*?@throws?JSONException
*/
public?static?JSONArray?updateCondition(JSONArray?jsonArray,
JSONObject?comOb)?throws?JSONException?{
JSONArray?endJsonArray?=?new?JSONArray();
String?comPro1?=?comOb.getString("pro");
String?comConn1?=?comOb.getString("connector");
boolean?flag?=?true;
for?(int?i?=?0;?i?
JSONObject?enJsOb1?=?jsonArray.getJSONObject(i);
String?enPro1?=?enJsOb1.getString("pro");
String?enConn1?=?enJsOb1.getString("connector");
//?屬性名和連接符都相同,則在這個json中添加進來
if?(enPro1.trim().equals(comPro1.trim())
&&?enConn1.trim().equals(comConn1.trim()))?{
flag?=?false;
JSONArray?comJsAr1?=?comOb.getJSONArray("values");
for?(int?m?=?0;?m?
String?comVal?=?comJsAr1.getString(m);
JSONArray?enJsAr1?=?enJsOb1.getJSONArray("values");
JSONArray?tempJsonArray?=?comPareVal(comVal,?enJsAr1);
enJsOb1.put("values",?tempJsonArray);
}
endJsonArray.put(enJsOb1);
continue;
}
endJsonArray.put(jsonArray.get(i));
}
if?(true?==?flag)?{
endJsonArray.put(comOb);
}
return?endJsonArray;
}
/**
*?將一個值追加進一個json數組中,并判斷數組中?是否已經存在這個值,如果存在,則不追加
*
*?@param?comVal
*????????????要追加的值
*?@param?enJsonArray
*????????????被追加的數組
*?@return?追加完成后的jso數組
*?@throws?JSONException
*/
public?static?JSONArray?comPareVal(String?comVal,?JSONArray?enJsonArray)
throws?JSONException?{
boolean?flag?=?true;
for?(int?i?=?0;?i?
String?enVal?=?enJsonArray.getString(i);
if?(!comVal.trim().equals(enVal.trim()))?{
flag?=?false;
}?else?{
flag?=?true;
break;
}
}
if?(true?==?flag)?{
return?enJsonArray;
}?else?{
enJsonArray.put(comVal);
return?enJsonArray;
}
}
}
經過上述的代碼,我們就可以將這兩個json對象合并為同一個對象,
{
"condition":?[
{
"values":?[
"1",
"2",
"3",
"4"
],
"pro":?"frontNum",
"connector":?"in"
},
{
"values":?[
"男",
"女",
"人妖"
],
"pro":?"sex",
"connector":?"!="
},
{
"values":?[
"曹操",
"劉備",
"章魚",
"張飛",
"馬超",
"孫武"
],
"pro":?"name",
"connector":?"!="
},
{
"values":?[
"山東",
"北京",
"河北",
"安徽",
"廣東",
"福建"
],
"pro":?"home",
"connector":?"!="
}
],
"className":?"User"
}
OK,完美實現合并JSON對象的功能。
總結
以上是生活随笔為你收集整理的java封装对象数组_java解析JSON对象和封装对象的示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c51编程语言基础习题,《单片机基础》练
- 下一篇: 华为鸿蒙用着怎么样,首批华为鸿蒙用户体验