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对象的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值