java json demo_Java中多个Json字符串对比demo

public static void main(String[] args) {

String a = "";

String b = "";

a = "[{\"mainTableNameCN\":\"主表名称1\",\"mainTableNameEN\":\"mainTableName\",\"mainTableField\":[{\"name\":\"businessNumber\",\"name_zh\":\"商机编号\",\"name_show\":\"商机编号\",\"type\":\"varchar\",\"description\":\"商机编号\",\"is_relation\":\"true\",\"relation_id\":\"code_321623414370\",\"item_type\":\"code\",\"LAY_TABLE_INDEX\":0},{\"name\":\"businessName\",\"name_zh\":\"商机名称\",\"name_show\":\"商机名称\",\"type\":\"varchar\",\"description\":\"商机名称\",\"is_relation\":\"true\",\"relation_id\":\"input_572045107844\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":1},{\"name\":\"judgeConvener\",\"name_zh\":\"评审召集人\",\"name_show\":\"评审召集人\",\"type\":\"varchar\",\"description\":\"评审召集人\",\"is_relation\":\"true\",\"relation_id\":\"input_624238012444\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":2},{\"name\":\"reviewTime\",\"name_zh\":\"评审时间\",\"name_show\":\"评审时间\",\"type\":\"varchar\",\"description\":\"评审时间\",\"is_relation\":\"true\",\"relation_id\":\"input_763487246487\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":3},{\"name\":\"reviewAddress\",\"name_zh\":\"评审地点\",\"name_show\":\"评审地点\",\"type\":\"varchar\",\"description\":\"评审地点\",\"is_relation\":\"true\",\"relation_id\":\"input_760308573244\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":4},{\"name\":\"reviewParticipation\",\"name_zh\":\"评审参加人员\",\"name_show\":\"评审参加人员\",\"type\":\"varchar\",\"description\":\"评审参加 人员\",\"is_relation\":\"true\",\"relation_id\":\"textarea_075567260317\",\"item_type\":\"textarea\",\"LAY_TABLE_INDEX\":5},{\"name\":\"mainOpinions\",\"name_zh\":\"主要意见\",\"name_show\":\"主要意见\",\"type\":\"varchar\",\"description\":\"主要意见\",\"is_relation\":\"true\",\"relation_id\":\"textarea_801121671777\",\"item_type\":\"textarea\",\"LAY_TABLE_INDEX\":6},{\"name\":\"reviewConclusion\",\"name_zh\":\"评审结论\",\"name_show\":\"评审结论\",\"type\":\"varchar\",\"description\":\"评审结论\",\"is_relation\":\"true\",\"relation_id\":\"checkbox_467861227571\",\"item_type\":\"checkBox\",\"LAY_TABLE_INDEX\":7},{\"name\":\"exceptionConclusion\",\"name_zh\":\"例外申请结论\",\"name_show\":\"例外申请结论\",\"type\":\"varchar\",\"description\":\"例外申请结论\",\"is_relation\":\"true\",\"relation_id\":\"textarea_827103384676\",\"item_type\":\"textarea\",\"LAY_TABLE_INDEX\":8},{\"name\":\"businesshead\",\"name_zh\":\"商机负责人\",\"name_show\":\"商机负责人\",\"type\":\"varchar\",\"description\":\"商机负责人\",\"is_relation\":false,\"relation_id\":\"input_141855644540\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":9}],\"subTableField\":[]}]";

b = "[{\"mainTableNameCN\":\"主表名称\",\"mainTableNameEN\":\"mainTableName\",\"mainTableField\":[{\"name\":\"businessName\",\"name_zh\":\"商机名称\",\"name_show\":\"商机名称\",\"type\":\"varchar\",\"description\":\"商机名称\",\"is_relation\":\"true\",\"relation_id\":\"input_572045107844\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":1},{\"name\":\"judgeConvener\",\"name_zh\":\"评审召集人\",\"name_show\":\"评审召集人\",\"type\":\"varchar\",\"description\":\"评审召集人\",\"is_relation\":\"true\",\"relation_id\":\"input_624238012444\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":2},{\"name\":\"reviewTime\",\"name_zh\":\"评审时间\",\"name_show\":\"评审时间\",\"type\":\"varchar\",\"description\":\"评审时间\",\"is_relation\":\"true\",\"relation_id\":\"input_763487246487\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":3},{\"name\":\"reviewAddress\",\"name_zh\":\"评审地点\",\"name_show\":\"评审地点\",\"type\":\"varchar\",\"description\":\"评审地点\",\"is_relation\":\"true\",\"relation_id\":\"input_760308573244\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":4},{\"name\":\"reviewParticipation\",\"name_zh\":\"评审参加人员\",\"name_show\":\"评审参加人员\",\"type\":\"varchar\",\"description\":\"评审参加 人员\",\"is_relation\":\"true\",\"relation_id\":\"textarea_075567260317\",\"item_type\":\"textarea\",\"LAY_TABLE_INDEX\":5},{\"name\":\"mainOpinions\",\"name_zh\":\"主要意见\",\"name_show\":\"主要意见\",\"type\":\"varchar\",\"description\":\"主要意见\",\"is_relation\":\"true\",\"relation_id\":\"textarea_801121671777\",\"item_type\":\"textarea\",\"LAY_TABLE_INDEX\":6},{\"name\":\"reviewConclusion\",\"name_zh\":\"评审结论\",\"name_show\":\"评审结论\",\"type\":\"varchar\",\"description\":\"评审结论\",\"is_relation\":\"true\",\"relation_id\":\"checkbox_467861227571\",\"item_type\":\"checkBox\",\"LAY_TABLE_INDEX\":7},{\"name\":\"exceptionConclusion\",\"name_zh\":\"例外申请结论\",\"name_show\":\"例外申请结论\",\"type\":\"varchar\",\"description\":\"例外申请结论\",\"is_relation\":\"true\",\"relation_id\":\"textarea_827103384676\",\"item_type\":\"textarea\",\"LAY_TABLE_INDEX\":8},{\"name\":\"businesshead\",\"name_zh\":\"商机负责人\",\"name_show\":\"商机负责人\",\"type\":\"varchar\",\"description\":\"商机负责人\",\"is_relation\":false,\"relation_id\":\"input_141855644540\",\"item_type\":\"input\",\"LAY_TABLE_INDEX\":9},{\"name\":\"businessNumber\",\"name_zh\":\"商机编号\",\"name_show\":\"商机编号\",\"type\":\"varchar\",\"description\":\"商机编号\",\"is_relation\":\"true\",\"relation_id\":\"code_321623414370\",\"item_type\":\"code\",\"LAY_TABLE_INDEX\":0}],\"subTableField\":[]}]";

// a = "[]";

JSONArray js1 = JSONArray.parseArray(a);

JSONArray js2 = JSONArray.parseArray(b);

// Object js1 = JSONObject.fromObject(a);

// Object js2 = JSONObject.fromObject(b);

arrangeJson(js1);

arrangeJson(js2);

contrast(js1, js2);

//net.sf.json包会认为 "field": abc123 非法,而com.google.gson包会自行转成 "field": "abc123"

// JSONObject js3 = JSONObject.fromObject(a);

// JSONObject js4 = JSONObject.fromObject(b);

// arrangeJson(js3);

// arrangeJson(js4);

// contrast(js3, js4);

}

static void contrast(Object a, Object b) {

boolean i = false;

System.out.println("json对象a序列化=" + a.toString());

System.out.println("json对象b序列化=" + b.toString());

if (a.toString().equals(b.toString())) {

i = true;

}

System.out.println("两个json对象是否等价:" + i);

}

//将json对象的各个元素重新排序

static void arrangeJson(Object js) {

if (js instanceof JSONObject) {

JSONObject jsCopy = JSONObject.parseObject(js.toString()); //将json对象复制一份,进行递归遍历取值

Iterator i = jsCopy.entrySet().iterator();

ArrayList arr = new ArrayList();

while (i.hasNext()) {

Map.Entry entry = (Map.Entry) i.next();

arr.add(entry.getKey().toString());

//System.out.println(entry.getKey() + " " + entry.getValue()+" "+jsCopy.get(entry.getKey()).getClass());

((JSONObject) js).remove(entry.getKey().toString()); //清空旧的子元素

}

sortArr(arr);

for (int n = 0; n < arr.size(); n++) {

//System.out.println("arr="+arr.get(n));

String key = arr.get(n).toString();

if (jsCopy.get(key) instanceof JSONObject || (jsCopy.get(key) instanceof JSONArray)) {

arrangeJson(jsCopy.get(key)); //递归调整json对象

}

((JSONObject) js).put(key, jsCopy.get(key)); //重新组装序列化的子元素

}

}

if (js instanceof JSONArray) {

JSONArray jsCopy = JSONArray.parseArray(js.toString());

ArrayList arr = new ArrayList();

for (int n = 0; n < jsCopy.size(); n++) {

arr.add(jsCopy.get(n));

((JSONArray) js).remove(0);

}

sortArr(arr);

for (int n = 0; n < arr.size(); n++) {

//System.out.println("arr_"+n+arr.get(n));

arrangeJson((Object) arr.get(n));

((JSONArray) js).add((Object) arr.get(n));

}

}

}

//将数组元素按照哈希码从小到大重新排序

private static void sortArr(ArrayList arr) {

int len = arr.size();

int[] n = new int[len];

ArrayList arrCopy = (ArrayList) arr.clone();

Object[] obj = new Object[len];

for (int i = 0; i < len; i++) {

n[i] = arrCopy.get(i).hashCode();

obj[i] = arrCopy.get(i);

arr.remove(0);

}

for (int i = 0; i < len; i++) {

for (int y = i + 1; y < len; y++) {

if (n[i] < n[y]) {

int x = n[y];

n[y] = n[i];

n[i] = x;

Object s = obj[y];

obj[y] = obj[i];

obj[i] = s;

}

}

}

for (int i = 0; i < len; i++) {

arr.add(obj[i]);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值