「两个json比较java」两个json比较差异java

博主:adminadmin 2023-03-20 15:32:11 473

今天给各位分享两个json比较java的知识,其中也会对两个json比较差异java进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA,当某个json数据中一个字段与另一个json数据中的字段值相同时,对两个json进行合并且相加,

要判断json数据的字段与其他数据是否相同,那么肯定是要先解析json数据。解析json数据的方式很多,Gson、FastJson都是很简便实用的工具。这里以Gson为例。

import java.lang.reflect.Type;

import java.util.*;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

public class Divination {

    public static void main(String[] args) {

        String jsonStr = "[{\"depid\":\"5\",\"score\":\"10\"},{\"depid\":\"4\",\"score\":\"40\"},{\"depid\":\"4\",\"score\":\"30\"},{\"depid\":\"5\",\"score\":\"30\"}]";

        System.out.println("原始的json字符串:" + jsonStr);

        // 解析

        Gson gson = new Gson();

        Type type = new TypeTokenArrayListJsonData() {

        }.getType();

        ArrayListJsonData list = gson.fromJson(jsonStr, type);

        // 合并

        ListJsonData ordered = new ArrayList();

        MapInteger, JsonData map = new HashMap();

        for (JsonData jsonData : list) {

            JsonData data = map.get(jsonData.getDepid());

            if (data != null) { // depid相同的合并score字段

                data.setScore(data.getScore() + jsonData.getScore());

            } else {

                map.put(jsonData.getDepid(), jsonData);

                ordered.add(jsonData);

            }

        }

        // 还原为json字符串

        System.out.println("合并后json字符串:" + gson.toJson(map.values()));

        System.out.println("合并后json字符串(按原来的顺序):" + gson.toJson(ordered));

    }

}

class JsonData {

    private int depid;

    private int score;

    public int getDepid() {

        return depid;

    }

    public void setDepid(int depid) {

        this.depid = depid;

    }

    public int getScore() {

        return score;

    }

    public void setScore(int score) {

        this.score = score;

    }

}

以上代码中ListJsonData ordered = new ArrayList();是为了按原json数组的顺序输出合并后的结果,如果对顺序无要求可以删除相关代码。

运行结果:

求大神指导,两个jsonarray结合的问题,用java实现

import java.util.HashMap;

import java.util.Map;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

public class JsonArray {

public static void main(String[] args) {

//建立两个数组,分别是ja和jb

JSONArray ja = new JSONArray();

JSONArray jb = new JSONArray();

//下面是向ja里面灌数据

MapString, Object map_a1 = new HashMapString,Object();

map_a1.put("名称","B2");

map_a1.put("a", "2");

JSONObject jsonObj_a1 = new JSONObject(map_a1);

ja.add(jsonObj_a1);

MapString, Object map_a2 = new HashMapString,Object();

map_a2.put("名称","C1");

map_a2.put("a", "176");

JSONObject jsonObj_a2 = new JSONObject(map_a2);

ja.add(jsonObj_a2);

MapString, Object map_a3 = new HashMapString,Object();

map_a3.put("名称","C2");

map_a3.put("a", "26");

JSONObject jsonObj_a3 = new JSONObject(map_a3);

ja.add(jsonObj_a3);

System.out.println(ja);

//向jb里面灌数据

MapString, Object map_b1 = new HashMapString,Object();

map_b1.put("b", "2");

JSONObject jsonObj_b1 = new JSONObject(map_b1);

jb.add(jsonObj_b1);

MapString, Object map_b2 = new HashMapString,Object();

map_b2.put("b", "176");

JSONObject jsonObj_b2 = new JSONObject(map_b2);

jb.add(jsonObj_b2);

MapString, Object map_b3 = new HashMapString,Object();

map_b3.put("b", "26");

JSONObject jsonObj_b3 = new JSONObject(map_b3);

jb.add(jsonObj_b3);

System.out.println(jb);

//合并后的数组jc

JSONArray jc = new JSONArray();

for(int i=0; ija.size(); i++){

MapString, Object map_ca = ja.getJSONObject(i);//获取ja数组中的map

MapString, Object map_cb = jb.getJSONObject(i);//获取jb数组中的map

//遍历刚刚获取的jb数组中的map_cb,获取map_cb的key,然后根据key拿到value,之后将其放入map_ca中,最后添加到jc

for(String key : map_cb.keySet()){

map_ca.put(key, map_cb.get(key));

}

jc.add(map_ca);

}

System.out.println(jc);

}

}

希望对你有用。

java中的JSON解析包用哪一个比较好呢,外加

最初全用用json-lib,后来发现gson更好用,所以,很多企业都转向gson

你也可以用一下这个。或者两个搭配使用。

如何比较两个相同结构的json数据

只比较字符串的话可以用 md5(字符串)的值比较。js好像没有原生的md5加密,可以引用第三方js。

java fastjson和老的json的区别

各个JSON技术的简介和优劣

1.json-lib

json-lib最开始的也是应用最广泛的json解析工具,json-lib不好的地方确实是依赖于很多第三方包,

包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar,

对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如一个类里面会出现另一个类的list或者map集合,json-lib从json到bean的转换就会出现问题。

json-lib在功能和性能上面都不能满足现在互联网化的需求。

2.开源的Jackson

相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。

而且Jackson社区相对比较活跃,更新速度也比较快。

Jackson对于复杂类型的json转换bean会出现问题,一些集合Map,List的转换出现问题。

Jackson对于复杂类型的bean转换Json,转换的json格式不是标准的Json格式

3.Google的Gson

Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来,

但自从在2008年五月公开发布第一版后已被许多公司或用户应用。

Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。

而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。

类里面只要有get和set方法,Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。

Gson在功能上面无可挑剔,但是性能上面比FastJson有所差距。

4.阿里巴巴的FastJson

Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。

无依赖,不需要例外额外的jar,能够直接跑在JDK上。

FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。

FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。

综上4种Json技术的比较,在项目选型的时候可以使用Google的Gson和阿里巴巴的FastJson两种并行使用,

如果只是功能要求,没有性能要求,可以使用google的Gson,

如果有性能上面的要求可以使用Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean

老的json楼主是指的json-lib吧

java中几个json工具分析测试

java中把json怎么转换成数组的方法:

1、使用原生的解析:

String json = "...";

JSONArray array= new JSONArray(json);

//遍历数组里的值,得到每个独立的对象,然后获取对应的值设置到声明好的对象中,最终创建对象完成后添加到集合中,如我自己代码里的片段:

for (int j = 0; j array.length(); j++) {

obj = array.getJSONObject(j);

Data data = new Data();

data.setThumbnail(obj.getString("thumbnail"));

data.setTitle(obj.getString("title"));

data.setUrl(obj.getString("url"));

mDataList.add(data);

}

2、使用第三方包如Gson,但是这个你得保证你的JSON字符串个z

java

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

关于两个json比较java和两个json比较差异java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。