Json、JavaBean、String等互转

本文介绍简单的Json、JavaBean、String互换(下文JavaBean简称Object对象,这里不是很严谨)

转换关系如下:

其中String和javaBean之间的转换可以通过“中间态”Json来完成。

先上代码,再补充解释

实体类

package com.blue.yanxishe.controller.app.market;
public class Student {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}

 实体类

package com.blue.yanxishe.controller.app.market;
public class MyStudent {
private Student myStudent ; public Student getMyStudent() {
return myStudent;
} public void setMyStudent(Student myStudent) {
this.myStudent = myStudent;
}
}  

 测试示例

package com.blue.yanxishe.controller.app.market;

import java.util.HashMap;
import java.util.Map; import com.google.gson.JsonObject; import net.sf.json.JSONObject; public class JsonStudy {
static String stuStr= "{\"name\":\"小明\",\"age\":18}";
static JSONObject stu_json = JSONObject.fromObject(stuStr);
public static void StringToJson(){
JSONObject stujson = JSONObject.fromObject(stuStr);
System.out.println(stujson);//输出:{"name":"小明","age":18}
}
public static void StringToObject(){
JSONObject stujson = JSONObject.fromObject(stuStr);
Student stuObject = (Student)JSONObject.toBean(stujson, Student.class);
System.out.println("我的名字叫"+stuObject.getName()+",今年"+stuObject.getAge()+"岁!"); //输出:我的名字叫小明,今年18岁!
}
public static void JsonToObject(){
JSONObject stujson = JSONObject.fromObject(stuStr);
Object stuObject = JSONObject.toBean(stujson, Student.class);
Student stuEntity = (Student)stuObject;
System.out.println("我的名字叫"+stuEntity.getName()+",今年"+stuEntity.getAge()+"岁!"); // 输出:我的名字叫小明,今年18岁!
}
public static void JsonToString(){
String stuString = stu_json.toString();
System.out.println(stuString); // 输出:{"name":"小明","age":18}
}
public static void ObjectToJson(){
Student stuObject = new Student();
stuObject.setAge(new Integer(18));
stuObject.setName("冬冬");
JSONObject stuJson = JSONObject.fromObject(stuObject);
System.out.println(stuJson);//{"name":"冬冬","age":18}
}
public static void ObjectToString(){
Student stuObject = new Student();
stuObject.setAge(new Integer(18));
stuObject.setName("冬冬");
JSONObject stuJson = JSONObject.fromObject(stuObject);
String stuString = stuJson.toString();
System.out.println(stuString);//输出:{"name":"冬冬","age":18}
}
public static void main(String[] args) {
StringToJson();
JsonToObject();
JsonToObject();
JsonToString();
ObjectToJson();
ObjectToString();
}
}

 

2019-02-27补充:

对于复杂的嵌套的实体类,可能会包报net.sf.ezmorph.bean.MorphDynaBean转换异常

原因:由于需要转换的对象中存在其他对象的引用,并且在转换的时候没有指定对应的类,此时json会使用默认的bean进行动态转换MorphDynaBean,但是在使用的时候就会出现类型转换异常,代码参考如下

public class A implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<B> b;
private List<B> c;
//get、set方法 省略
}

解决方法,在转换之前设置类信息,即显示说明实体类内部嵌套的类的类型

Map<String,Class<?>> classMap = new HashMap<String,Class<?>>();
classMap.put("b", B.class);
classMap.put("c", C.class);
JSONObject.toBean(jsonobject, A.class,classMap);

 

参考文献

1-https://blog.csdn.net/sld880311/article/details/72841834

Json、JavaBean、String等互转的更多相关文章

  1. JSON与String之间互转

    一,String转json 这个JSON.parse()与eval()都可以实现,但是它们是有区别的, JSON.parse对json字符串要求比eval()更为严格,key名称(例如name)全部必 ...

  2. JSON 与 String、Map、JavaBean互转

    JSON 与 String.Map.JavaBean互转 //解析远程登录用户信息 AttributePrincipal principal = AssertionHolder.getAssertio ...

  3. json、javaBean、xml互转的几种工具介绍

    json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...

  4. json、javaBean、xml互转的几种工具介绍 (转载)

    工作中经常要用到Json.JavaBean.Xml之间的相互转换,用到了很多种方式,这里做下总结,以供参考. 现在主流的转换工具有json-lib.jackson.fastjson等,我为大家一一做简 ...

  5. Gson基本操作,JsonObject,JsonArray,String,JavaBean,List互转

    (转自)https://www.cnblogs.com/robbinluobo/p/7217387.html String.JsonObject.JavaBean 互相转换 User user = n ...

  6. 使用FastJSON 对Map/JSON/String 进行互转

    Fastjson是一个Java语言编写的高性能功能完善的JSON库,由阿里巴巴公司团队开发的主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极致, ...

  7. Json与Java对象互转之Gson学习

    Json与Java对象互转之Gson学习 请尊重他人的劳动成果.转载请注明出处:Json与Java对象互转之Gson学习         我曾在<XML,Object,Json转换之浅析Xstr ...

  8. Jaxb2实现JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...

  9. JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...

随机推荐

  1. Spring BeanUtils简单使用

    引入包 <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-be ...

  2. 解决jsfl 弹出警告

    fl.showIdleMessage(false);

  3. get return value of python in shell

    from: https://stackoverflow.com/questions/2115615/assigning-value-to-shell-variable-using-a-function ...

  4. 命名空间与use

    以下是自己读PHP手册命名空间这一节的一些笔记,还有自己上机做命名空间测试的一些整理,原创博客,有错欢迎指正: 1.命名空间声明必须是第一条语句,若没有声明命名空间的脚本,则被认为是全局空间的脚本.若 ...

  5. Zabbix笔记

    简单检查中的icmppingloss[<target>,<packets>,<interval>,<size>,<timeout>]   结 ...

  6. 记一个pg连接数过多的异常

    java中使用数据库连接池,如果在部署的时候,操作不慎,可能出现典型的连接池爆满的问题 org.postgresql.util.PSQLException: FATAL: sorry, too man ...

  7. 计算机网络协议包头赏析-IP

    上次和大家聊了聊以太网的帧格式,本文会讲解IP数据报格式的定义. == 开门见山,先上图: 任何一个IP数据报都是由首部和数据两部分组成,而且首部基本是固定长度的,长度为20字节.这一点很重要,其他都 ...

  8. plsql和tsql常用函数比对

    http://www.jb51.net/list/list_154_1.htm 数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value fro ...

  9. week06 07 创建RPC SERVER 换个镜像安装下载

    RPC server 使用python类库 https://pypi.org/project/python-jsonrpc/ 和NPM 不一样 他没有global选项 他安装的就是全局的安装的类库叫p ...

  10. Oracle Oracle数据库 迁移到 SQL Server上

    原地址:https://blog.csdn.net/LongtengGensSupreme/article/details/81355181