Json字符串转实体工具类

介绍

在开发中,我们经常会用到JSON对象,而为了数据传输方便,我们还经常会使用JSONString,那么如果我们得到了一个JSONString,并且知道它对应一个实体类,如何将JSONString转为实体类呢?

使用FastJSON

利用FastJSON的parseObject方法,核心代码

/***
 * 将JSON文本反序列化到对象
 */
public static <T> T toBean(String jsonString, Class<T> bean) {
    T t = (T) JSON.parseObject(jsonString, bean); // fastjson
    return t;
}

测试代码

package com.example.json.test;

import com.alibaba.fastjson.JSON;
import com.example.json.dto.User;
import com.example.json.util.JSONUtil;

public class TestFunction {

    public static void main(String[] args) {
        //声明对象
        User user = new User();
        user.setId("111");
        user.setUsername("tom");
//        user.setPassword("abc");

        //将对象转成JSONString
        String userString = JSON.toJSONString(user);
        System.out.println(userString);

        //将JSONString转成对象
        User userEntity = JSONUtil.toBean(userString, User.class);
        System.out.println(userEntity);

    }

}

工具类

package com.example.json.util;

import com.alibaba.fastjson.JSON;

public class JSONUtil {

    /***
     * 将JSON文本反序列化到对象
     */
    public static <T> T toBean(String jsonString, Class<T> bean) {
        T t = (T) JSON.parseObject(jsonString, bean); // fastjson
        return t;
    }

}

实体

package com.example.json.dto;

import lombok.Data;

@Data
public class User {

    private String id;

    private String username;

    private String password;

}

pom依赖

<!--fastjson-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.69</version>
</dependency>

结果

在这里插入图片描述

我们注意到,即使不给password赋值,转换时也是没有问题的,没有的就赋值null或默认值

另一场景

但是我们想一想,如果我们传的JSONString和实体不对应,如JSONString对应的是UserAdd实体,但是转换时我们想转成User实体,可不可以呢?(事实上,这种场景在实际开发中是十分常见的)

我们来结合代码看一下吧

我们声明一个新的实体UserAdd,实体的部分字段和User一致

package com.example.json.dto;

import lombok.Data;

@Data
public class UserAdd {

    private String id;

    private String username;

    private String passwors;

    private String sex;

}

假设现在我们接收到的JSONString是UserAdd的,但我们仍将它转成User实体,会发生什么呢?

	...
	UserAdd userAdd = new UserAdd();
	userAdd.setId("111");
	userAdd.setUsername("tom");
	userAdd.setPasswors("abc");
	userAdd.setSex("f");
	
	//将对象转成JSONString
	String userString = JSON.toJSONString(userAdd);
	System.out.println(userString);
	
	//将JSONString转成对象
    User userEntity = JSONUtil.toBean(userString, User.class);
    System.out.println(userEntity);
    ...

结果

在这里插入图片描述

总结

我们会发现,它只将相同属性的部分赋值了,不同属性的部分,如果User中没有该字段,就不处理,如果User中有的字段就赋默认值

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用Java中的Gson库将json字符串换为Java对象。具体步骤如下: 1. 引入Gson库的依赖,例如: ``` <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency> ``` 2. 定义一个Java类来表示json中的数据,例如: ``` public class User { private String name; private int age; private boolean isMale; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean isMale() { return isMale; } public void setMale(boolean male) { isMale = male; } } ``` 3. 使用Gson库将json字符串换为Java对象,例如: ``` Gson gson = new Gson(); String json = "{\"name\":\"Tom\",\"age\":18,\"isMale\":true}"; User user = gson.fromJson(json, User.class); ``` 这样就可以将json字符串`{"name":"Tom","age":18,"isMale":true}`换为一个User对象,并且可以通过该对象的get方法获取json中的数据。 ### 回答2: 实体类接收JSON字符串是一种常见的数据传输方式,用于将前端传递的数据化为后端能够处理的对象。以下是一个简单的例子来说明如何实现: 假设有一个实体类User,包含属性name和age,我们要接收一个JSON字符串,例如:{"name":"张三","age":18},并将其化为User对象。 首先,我们需要引入JSON解析的库,如fastjson、Jackson等,以便于将JSON字符串化为对象。 在User类中定义相应的属性name和age,并提供对应的getter和setter方法。 然后,我们可以创建一个方法,命名为fromJson,接收一个表示JSON字符串的参数,并返回一个User对象。方法内部的实现如下: 1. 将JSON字符串化为JSONObject对象,可以使用JSON解析库提供的方法,如:JSONObject.parseObject(jsonString)。 2. 使用JSONObject对象获取属性值,如:String name = jsonObject.getString("name"),int age = jsonObject.getIntValue("age")。 3. 创建一个User对象,将获取的属性值设置给相应的属性,user.setName(name),user.setAge(age)。 4. 返回User对象。 最后,我们可以在代码中调用fromJson方法,传入JSON字符串,即可得到一个User对象。 需要注意的是,JSON字符串的格式必须与实体类的属性对应上,属性名要一致,类型也要匹配,否则化过程会出错。另外,在使用JSON解析库时,要根据具体的库提供的方法进行操作。 这样,我们就可以很方便地实现实体类接收JSON字符串的功能。接收到的JSON字符串可以包含更多的属性,只需在实体类中相应地增加属性即可。 ### 回答3: 实体类接收JSON字符串是指在编程中的一种操作,将一个JSON格式的字符串换为对应的实体类对象。 首先,实体类是指用于描述某个具体事物的类,通常包含了该事物的属性和方法。JSON字符串是一种轻量级的数据交换格式,常用于前后端数据传输和存储。在将JSON字符串换为实体类对象时,可以使用JSON工具库或者框架提供的相关方法。 以Java为例,可以使用Jackson、Gson等库来进行JSON字符串实体类对象的换。具体步骤如下: 1. 首先,在实体类中定义与JSON字符串中的字段名称相匹配的属性,以及对应的setter和getter方法。 2. 然后,使用JSON工具库提供的方法将JSON字符串换为实体类对象。例如,使用Jackson库的`ObjectMapper`类的`readValue`方法可将JSON字符串换为实体类对象。 示例代码如下: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class MyClass { private String name; private int age; // getter and setter methods for name and age public static void main(String[] args) { String jsonStr = "{\"name\":\"Alice\",\"age\":25}"; try { ObjectMapper objectMapper = new ObjectMapper(); MyClass obj = objectMapper.readValue(jsonStr, MyClass.class); System.out.println(obj.getName()); // 输出:Alice System.out.println(obj.getAge()); // 输出:25 } catch (Exception e) { e.printStackTrace(); } } } ``` 以上代码中,我们首先定义了一个`MyClass`实体类,包含了`name`和`age`两个属性,并提供了对应的setter和getter方法。然后,通过`ObjectMapper`类的`readValue`方法,将JSON字符串`jsonStr`换为`MyClass`对象`obj`。最后,我们可以通过调用`obj`的getter方法获取对应字段的值。 总之,实体类接收JSON字符串是一种常见的操作,通过使用JSON工具库的相关方法,我们可以将JSON字符串换为对应的实体类对象,方便在程序中进行数据的处理和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BirdMan98

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值