JAVA对象与JSON之间的相互转换

这里介绍两种方式,可根据具体情况选择:

一、使用JSON类进行转换

1.多个对象转换:

JSONObject object = new JSONObject();
object.put("userName",userName);
object.put("SetType",SetType);
String json = object.toJSONString();

//获取JSONObject中的值
jsonObject.getString("userName");

2.单个对象转换:

//这里User可以是对象,集合,等
String json = JSON.toJSONString(User);

//转换json字符串,并获取值
JSONObject jsonObject = JSONObject.parseObject(json);
jsonObject.getString("name");//这里的name是User对象中的参数

二、使用阿里的fastjson进行转换

使用阿里提供的json工具类,需要先引入其依赖:

          <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.22</version>
        </dependency>

1、单个对象转换

String json = "{\"userName\":\"张三\",\"sex\":\"男\"}";
User user = JSONObject.parseObject(json, User.class);

2、列表对象转换

String json = "[{\"userName\":\"张三\",\"sex\":\"男\"},{\"userName\":\"李四\",\"sex\":\"男\"}]";

List<User> User = JSONArray.parseArray(json, User.class);
//List<User> User = JSONArray.parseArray(JSON.parse(json).toString(), User.class);

注意事项:

对象转换JSON格式字符串时,参数字段是首字母会被转换成小写

如需要返回的json格式的参数字段是首字母大写,这里有两个解决方法:

一、将实体类private该为public(不推荐)

public class User{
    public String UserName;
    public String Sex;

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String UserName) {
        this.UserName= UserName;
    }
    public String getSex() {
        return Sex;
    }

    public void setSex(String Sex) {
        this.Sex= Sex;
    }
}

这样可以解决问题,但是并不规范,这里并不推荐此种方式。

二、使用@JSONField注解方式(推荐)

public class User{
    @JSONField(name = "UserName")
    private String userName; //注意!首字母是小写
    @JSONField(name = "Sex")
    private String sex; 

    public String getUserName() {
        return UserName;
    }

    public void setUserName(String UserName) {
        this.UserName= UserName;
    }
    public String getSex() {
        return Sex;
    }

    public void setSex(String Sex) {
        this.Sex= Sex;
    }
}

注意!参数,使用注解后,参数首字母不要写成大写,否则该注解不会生效,在转换时又会被自动转换为首字母小写~
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值