java对象与json对象间的相互转换

1、将java对象转换为json字符串

  public static String beanToJsonStr(){
        User user=new User();
        JSONObject json = JSONObject.fromObject(user);//将java对象转换为json对象
        String str = json.toString();//将json对象转换为字符串
        return str;
    }

输出结果:

{
	"address": "山东青岛",
	"name": "晓晓",
	"age": 25,
	"roles": [{
		"roleId": 1,
		"roleName": "角色名称"
	},
	{
		"roleId": 2,
		"roleName": "角色名称"
	},
	{
		"roleId": 3,
		"roleName": "角色名称"
	}]
}

2、json字符串转化为java对象

 public static String jsonStrToBean(String jsonStr){
        JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象
        User user = (User)JSONObject.toBean(obj,User.class);//将建json对象转换为Person对象
        return user.toString();
    }

输出结果

User{name='晓晓', age=25, address='山东青岛', roles=[net.sf.ezmorph.bean.MorphDynaBean@6d7b4f4c[
  {roleId=1, roleName=角色名称}
], net.sf.ezmorph.bean.MorphDynaBean@527740a2[
  {roleId=2, roleName=角色名称}
], net.sf.ezmorph.bean.MorphDynaBean@13a5fe33[
  {roleId=3, roleName=角色名称}
]]}

3、解析json字符串,通过key获取值

JSONObject jsonObject = JSONObject.fromObject(beanToJsonStr());
        String name = jsonObject.getString("name");
        int age = jsonObject.getInt("age");
        String address= jsonObject.getString("address");
        System.out.println("name="+name);
        System.out.println("age="+age);
        System.out.println("address="+address);
        String roleStr=jsonObject.getString("roles");
        JSONArray jsonArray = JSONArray.fromObject(roleStr);
        for(int i=0;i<jsonArray.size();i++){
            System.out.println(jsonArray.get(i).toString());
        }

输出结果

name=晓晓
age=25
address=山东青岛
{"roleId":1,"roleName":"角色名称"}
{"roleId":2,"roleName":"角色名称"}
{"roleId":3,"roleName":"角色名称"}

4、User.java

import com.elink.estos.modules.ibms.dto.Role;

import java.util.ArrayList;
import java.util.List;

/**
 * @Date: 2019/9/3 14:57
 * @Description:
 */
public class User {
    private String name;
    private int age;
    private String address;
    private List<Role> roles;

    public User(){
        this.name="晓晓";
        this.age=25;
        this.address="山东青岛";
        this.roles=initRoles();
    }

    private List<Role> initRoles() {
        List<Role> roles=new ArrayList<>();
        for(int i=1;i<4;i++){
            Role role=new Role();
            role.setRoleId(i);
            role.setRoleName("角色名称");
            roles.add(role);
        }
        return roles;
    }

    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 String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public List<Role> getRoles() {
        return roles;
    }

    public void setRoles(List<Role> roles) {
        this.roles = roles;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                ", roles=" + roles +
                '}';
    }
}

5、Role.java


/**
 * @Date: 2019/9/3 14:57
 * @Description:
 */
public class Role {
    private int roleId;
    private String roleName;

    public int getRoleId() {
        return roleId;
    }

    public void setRoleId(int roleId) {
        this.roleId = roleId;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值