关于Java中Json的各种处理

 更新时间:2022年06月18日 14:38:44   作者:alex_fung  
这篇文章主要介绍了关于Java中Json的各种处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java Json的各种处理

一、net.sf.json

1、Json转Map

JSONObject jsonObject = JSONObject.fromObject(jsonStr);
Map<String,Object> map = new HashMap<>();
map.put("code",jsonObject .getInt("code"));

2、Json转实体

JSONObject jsonObject = JSONObject.fromObject(jsonStr);
ArticleForm articleForm = (ArticleForm) JSONObject.toBean(jsonObject , ArticleForm.class);

如果实体中带有List字段,需要指定泛型

Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("keywords", String.class);
ArticleForm articleForm = (ArticleForm) JSONObject.toBean(data.getJSONObject(i), ArticleForm.class,classMap);

3、Json转集合

List<ArticleForm> list = new ArrayList<>();
JSONArray data = jsonObject.getJSONArray("data");
if (errorCode == 0 && data != null && !data.isEmpty()) {
    for (int i = 0; i < data.size(); i++) {
        Map<String, Class> classMap = new HashMap<String, Class>();
        classMap.put("keywords", String.class);
        ArticleForm articleForm = (ArticleForm) JSONObject.toBean(data.getJSONObject(i), ArticleForm.class,classMap);
        list.add(articleForm);
    }
}

另外一种:

List<ArticleForm> list = new ArrayList<>();
JSONArray data = jsonObject.getJSONArray("data");
if (errorCode == 0 && data != null && !data.isEmpty()) {
    Map<String, Class> classMap = new HashMap<String, Class>();
    classMap.put("keywords", String.class);
    list  = (List<ArticleForm>) JSONArray.toArray(data, ArticleForm.class,classMap);
}

二、com.alibaba.fastjson

1、Json转Map

JSONObject jsonObject = JSON.parseObject(jsonStr);
Map<String,Object> map = new HashMap<>();
map.put("code",jsonObject .getInt("code"));

2、Json转实体

ArticleForm articleForm = JSON.parseObject(jsonStr, new TypeReference<ArticleForm>() {});

3、Json转集合

List<ArticleForm> list = JSON.parseObject(jsonStr,new TypeReference<ArrayList<ArticleForm>>() {});

Java常用json处理

// String和json的互相转换
        String str = "{\"status\":200,\"message\":\"\",\"data\":{\"KmList\":[\"总分\",\"语文\",\"数学\",\"英语\",\"道德与法治\",\"科学基础\"]}}";
        System.out.println("str:"+str);
//        JSONArray arrays = JSON.parseArray(str);        // string转jsonArray
        JSONObject jsonObject = JSON.parseObject(str);    // string转jsonObject
        System.out.println("jsonObject:"+jsonObject);
        String s = jsonObject.toJSONString();             // json(object和Array相同)转string
  
        // json转list<Object>或者object
        String str1 = "[\"总分\",\"语文\",\"数学\",\"英语\",\"道德与法治\",\"科学基础\"]";
        List<String> list = JSON.parseArray(str1, String.class); // json转list集合,将String.class改成其他对象.class即可
        System.out.println("list:"+JSON.toJSONString(list));
        String s1 = JSON.parseObject(JSON.toJSONString("语文"), String.class);       // json转对象,将String.class改成其他对象.class即可
        System.out.println("s1:"+s1);
        // object转字符串后即可转jsonObject或者jsonArray
 
        // json和map
        Map<String, Object> map = new HashMap<>();
        map.put("xAxis","11");
        map.put("yAxis","2222");
        String json = JSON.toJSONString(map);//map转String
        System.out.println("json:"+json);
        Map<String, Object>  map1 = JSON.parseObject(json, Map.class);     // 转List<Map> parserArray即可
        System.out.println("map1:"+map1);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Socket结合线程池使用实现客户端和服务端通信demo

    Socket结合线程池使用实现客户端和服务端通信demo

    这篇文章主要为大家介绍了Socket结合线程池的使用来实现客户端和服务端通信实战demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • 解决MyEclipse6.5无法启动,一直停留刚开始启动界面的详解

    解决MyEclipse6.5无法启动,一直停留刚开始启动界面的详解

    本篇文章是对解决MyEclipse6.5无法启动,一直停留刚开始启动界面的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • SpringBoot中添加监听器及创建线程的代码示例

    SpringBoot中添加监听器及创建线程的代码示例

    这篇文章主要介绍了SpringBoot中如何添加监听器及创建线程,文中有详细的代码示例,具有一定的参考价值,需要的朋友可以参考下
    2023-06-06
  • Java 中 synchronized的用法详解(四种用法)

    Java 中 synchronized的用法详解(四种用法)

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧
    2015-11-11
  • springboot项目实现断点续传功能

    springboot项目实现断点续传功能

    这篇文章主要介绍了springboot项目实现断点续传,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 深入理解Java设计模式之状态模式

    深入理解Java设计模式之状态模式

    这篇文章主要介绍了JAVA设计模式之职责链模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解
    2021-11-11
  • IDEA SpringBoot:Cannot resolve configuration property配置文件问题

    IDEA SpringBoot:Cannot resolve configuration&

    这篇文章主要介绍了IDEA SpringBoot:Cannot resolve configuration property配置文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Jar包反编译修改代码后重新打jar包图文详解

    Jar包反编译修改代码后重新打jar包图文详解

    这篇文章主要给大家介绍了关于Jar包反编译修改代码后重新打jar包的相关资料,JAR文件就是Java Archive(Java档案文件),它是 Java的一种文档格式,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • JDBC使用Statement修改数据库

    JDBC使用Statement修改数据库

    这篇文章主要为大家详细介绍了JDBC使用Statement修改数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Java中用enum结合testng实现数据驱动的方法示例

    Java中用enum结合testng实现数据驱动的方法示例

    TestNG数据驱动提供的参数化让我们在测试项目可以灵活根据需求建立不同的dataprovider来提供数据,而真正实现数据,页面,测试彼此独立而又有机结合的可能性。 下面这篇文章主要给大家介绍了Java中用enum和testng做数据驱动的方法示例,需要的朋友可以参考借鉴。
    2017-01-01

最新评论