jackson 如何将实体转json json字符串转实体

目录
  • 将实体转json json字符串转实体
    • 实体转json
    • json转实体
  • 使用Jackson操作json数据,各场景实例
    • 1. 对象(示例为 UserEntity)转 json 数据
    • 2. json 数据 转 对象
    • 3. map 转 json 数据
    • 4. json 数据 转 map
    • 5. List<UserEntity> 转 json 数据
    • 6. json 数据 转 List<UserEntity>
    • 7.接口接收稍微复杂一点的json数据,如何拆解

将实体转json json字符串转实体

@Autowired
ObjectMapper objectMapper;

实体转json

  String data = "";  //一个json串
  Student stu = new Student ();
 stu = objectMapper.readValue(data, Student .class);// json字符串转实体
public <T> String writeAsString(T t) throws JsonProcessingException {
    return objectMapper.writeValueAsString(t);
}
String aa = writeAsString(stu);

json转实体

    public <T> T readValue(String data) {
        try {
            return objectMapper.readValue(data, new TypeReference<T>() {
            });
        } catch (Exception e) {
            // TODO: handle exception
        }
        return null;
    }

使用Jackson操作json数据,各场景实例

该篇内容,结合实例介绍使用jackson来操作json数据:

在pom.xml文件中添加 ,Jackson 依赖:

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.1</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.1</version>
        </dependency>

示例中使用到的实体类, UserEntity.java

/**
 * @Author : JCccc
 * @CreateTime : 2020/3/18
 * @Description :
 **/
public class UserEntity {
    private Integer id;
    private String name;
    private Integer age;

  // set get 方法 和 toString 等方法就不粘贴出来了
}

在介绍示例前,先看一张图,使用jackson如:

1. 对象(示例为 UserEntity)转 json 数据

writeValueAsString 方法

    public static void main(String[] args) throws JsonProcessingException {
        UserEntity userEntity=new UserEntity();
        userEntity.setId(100);
        userEntity.setName("JCccc");
        userEntity.setAge(18);
        ObjectMapper mapper = new ObjectMapper();
        String jsonString = mapper.writerWithDefaultPrettyPrinter()
                .writeValueAsString(userEntity);
        System.out.println(jsonString);
    }

控制台输出:

格式很漂亮,是因为使用了 :

咱们不需要漂亮,所以后面的我都不使用格式的方法了,转换的时候,只需要 writeValueAsString 就够了 。

2. json 数据 转 对象

readValue 方法

        ObjectMapper mapper = new ObjectMapper();
        //json字符串转对象
        UserEntity userEntityNew = mapper.readValue(jsonString, UserEntity.class);
        System.out.println(userEntityNew);

控制台输出:

3. map 转 json 数据

        ObjectMapper mapper = new ObjectMapper();
        Map map=new HashMap();
        map.put("A",1);
        map.put("B",2);
        map.put("C",3);
        map.put("D",4);
        String jsonMap = mapper.writeValueAsString(map);
        System.out.println(jsonMap);

控制台输出:

4. json 数据 转 map

        ObjectMapper mapper = new ObjectMapper();
        //json字符串转为Map对象
        Map mapNew=mapper.readValue(jsonMap, Map.class);
        System.out.println(mapNew);

控制台输出:

5. List<UserEntity> 转 json 数据

        ObjectMapper mapper = new ObjectMapper();
        UserEntity userEntity1=new UserEntity();
        userEntity1.setId(101);
        userEntity1.setName("JCccc1");
        userEntity1.setAge(18);
        UserEntity userEntity2=new UserEntity();
        userEntity2.setId(102);
        userEntity2.setName("JCccc2");
        userEntity2.setAge(18);
        UserEntity userEntity3=new UserEntity();
        userEntity3.setId(103);
        userEntity3.setName("JCccc3");
        userEntity3.setAge(18);
        List<UserEntity> userList=new ArrayList<>();
        userList.add(userEntity1);
        userList.add(userEntity2);
        userList.add(userEntity3);

        String jsonList = mapper.writeValueAsString(userList);
        System.out.println(jsonList);

控制台输出:

6. json 数据 转 List<UserEntity>

        ObjectMapper mapper = new ObjectMapper();
        List<UserEntity> userListNew= mapper.readValue(jsonList,new TypeReference<List<UserEntity>>(){});
        System.out.println(userListNew.toString());

控制台输出:

7.接口接收稍微复杂一点的json数据,如何拆解

现在模拟了一串稍微复杂一些的json数据,如:

{
	"msg": "success",
	"data": [
		{
			"id": 101,
			"name": "JCccc1",
			"age": 18
		},
		{
			"id": 102,
			"name": "JCccc2",
			"age": 18
		},
		{
			"id": 103,
			"name": "JCccc3",
			"age": 18
		}
	],
	"status": 200
}

那么我们接口接收时,如果操作呢?

1.直接使用 @RequestBody Map map 接收,里面如果嵌套list,那就拿出对应的value转list,然后该怎么拿怎么拿。

    @PostMapping("testJackson")
    public void testJackson(@RequestBody Map map) {

        System.out.println(map);
        String  msg = String.valueOf(map.get("msg"));
        System.out.println(msg);
        List dataList = (List) map.get("data");
        System.out.println(dataList.toString());
    }

2.使用字符串接收json数据 @RequestBody String jsonStr , 那么就使用jackson把这个json数据转为Map,然后该怎么拿怎么拿。

    @PostMapping("testJackson")
    public void testJackson(@RequestBody String jsonStr) throws JsonProcessingException {

        System.out.println(jsonStr);
        ObjectMapper mapper = new ObjectMapper();
        Map map = mapper.readValue(jsonStr, Map.class);
        String  msg = String.valueOf(map.get("msg"));
        System.out.println(msg);
        String  status = String.valueOf(map.get("status"));
        System.out.println(status);
        List dataList = (List) map.get("data");
        System.out.println(dataList.toString());
    }

好的,该篇就到此。

ps: 为啥我要科普这个jackson的使用么?这个算是基本的操作了,原本我经手的很多项目都用到的fastjson ,其实使用起来也杠杠的。

除了jackson是springboot web包的内部解析框架外,其实还有一些原因。

懂的人自然会明白。

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

(0)

相关推荐

  • java中实体类和JSON对象之间相互转化

    在需要用到JSON对象封装数据的时候,往往会写很多代码,也有很多复制粘贴,为了用POJO的思想我们可以装JSON转化为实体对象进行操作 package myUtil; import java.io.IOException; import myProject.Student; import myProject.StudentList; import org.codehaus.jackson.map.ObjectMapper; import org.json.JSONArray; import or

  • 使用Jackson来实现Java对象与JSON的相互转换的教程

    一.入门 Jackson中有个ObjectMapper类很是实用,用于Java对象与JSON的互换. 1.JAVA对象转JSON[JSON序列化] import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonDemo { p

  • 使用jackson实现对象json之间的相互转换(spring boot)

    目录 首先,在pom.xml里弄好依赖 用来获取天气预报接口的数据 返回的json字符串就像下面这个样子 我拆成了下面两个对象 开始书写工具类,方便以后调用~ 封装完成,写测试类 之前的json转对象,对象转json.总是比较繁琐,不够简洁.自从接触到jackson之后,发现原来对象和json转换可以这么简单.拿一个天气预报的小例子来说明一下~如下图.[若是有小误,还望指正] 不说,直接上码~ 首先,在pom.xml里弄好依赖 具体依赖需要上网去查找,咱用的是下面这个. <!-- 对象转换成js

  • jackson 如何将实体转json json字符串转实体

    目录 将实体转json json字符串转实体 实体转json json转实体 使用Jackson操作json数据,各场景实例 1. 对象(示例为 UserEntity)转 json 数据 2. json 数据 转 对象 3. map 转 json 数据 4. json 数据 转 map 5. List<UserEntity> 转 json 数据 6. json 数据 转 List<UserEntity> 7.接口接收稍微复杂一点的json数据,如何拆解 将实体转json json字

  • ASP.NET JSON字符串与实体类的互转换示例代码

    还是先封装一个类吧! 这个类网上都可以找到的!有个这个类,一切都将变得简单了,哈哈. 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Runtime.Serialization.Json;using System.ServiceModel.Web;///记得引用这个命名空间using System.IO;using System.Tex

  • 关于json字符串与实体之间的严格验证代码

    在一个项目中要求严格验证传入的json字符串与定义的 类匹配,否则不记录.感觉这个严格验证找了好多资料才找到,可能用的人比较少,特摘出来给大家分析,直接上代码了: using Newtonsoft.Json; 首先引用 Newtonsoft.Json.Schema 主函数调用 private static void Main(string[] args) { string Json = @"{ 'Email':'58', 'Active':true, 'CreateDate':'2015-12-

  • ASP.NET自带对象JSON字符串与实体类的转换

    关于JSON的更多介绍,请各位自行google了解!如果要我写的话,我也是去Google后copy!嘿嘿,一直以来很想学习json,大量的找资料和写demo,总算有点了解! 切入正题! 还是先封装一个类吧! 这个类网上都可以找到的!有个这个类,一切都将变得简单了,哈哈. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Runtime.Serializ

  • java中实体类转Json的2种方法

    首先申明所需jar包: ezmorph-1.0.6.jar jackson-all-1.7.6.jar jsoup-1.5.2.jar 一.创建一个实体类Emp. package com.hyx.entity; public class Emp { private Integer id; private String name; private Integer dptNo; private String gender; private String duty; public Integer ge

  • .net实体类与json相互转换

    .net实体类与json相互转换时,注意要点: 1.jsonhelp编写时候添加的引用.System.Runtime.Serialization.Json;  2.实体类需声明为public jsonhelp代码:  using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.Seri

  • 使用ObjectMapper把Json转换为复杂的实体类

    ObjectMapper Json转换为复杂的实体类 实体类 主实体类* GetRigSmsResult* 里面的* smsContentList 是一个list类型的的 SmsContentSmsContent *集合. /** * * * @author 李关钦 * @version 2017年3月14日 */ public class GetRigSmsResult { private String dataCoding; private String messageParts; priv

  • 详解SpringMVC @RequestBody接收Json对象字符串

    页面提交请求参数有两种,一种是form格式提交,一种json格式提交 通常情况下我们使用的都是form格式提交的数据,数据格式:k=v&k=v,这个时候用springMVC接收参数没有问题,但有时候前端会通过json向后端传递数据,就会出现springMVC获取不到参数值的情况 注意:jQuery的$.post方法虽然也可以传递json格式数据,但实际上是用的form格式提交,jquery会帮你把json转成form格式提交后台 所以其实可以通过$.post,$.get来提交json格式,让jq

随机推荐