Json、JavaBean、String等互转
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等互转的更多相关文章
- JSON与String之间互转
一,String转json 这个JSON.parse()与eval()都可以实现,但是它们是有区别的, JSON.parse对json字符串要求比eval()更为严格,key名称(例如name)全部必 ...
- JSON 与 String、Map、JavaBean互转
JSON 与 String.Map.JavaBean互转 //解析远程登录用户信息 AttributePrincipal principal = AssertionHolder.getAssertio ...
- json、javaBean、xml互转的几种工具介绍
json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...
- json、javaBean、xml互转的几种工具介绍 (转载)
工作中经常要用到Json.JavaBean.Xml之间的相互转换,用到了很多种方式,这里做下总结,以供参考. 现在主流的转换工具有json-lib.jackson.fastjson等,我为大家一一做简 ...
- Gson基本操作,JsonObject,JsonArray,String,JavaBean,List互转
(转自)https://www.cnblogs.com/robbinluobo/p/7217387.html String.JsonObject.JavaBean 互相转换 User user = n ...
- 使用FastJSON 对Map/JSON/String 进行互转
Fastjson是一个Java语言编写的高性能功能完善的JSON库,由阿里巴巴公司团队开发的主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极致, ...
- Json与Java对象互转之Gson学习
Json与Java对象互转之Gson学习 请尊重他人的劳动成果.转载请注明出处:Json与Java对象互转之Gson学习 我曾在<XML,Object,Json转换之浅析Xstr ...
- Jaxb2实现JavaBean与xml互转的方法详解
本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...
- JavaBean与xml互转的方法详解
本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...
随机推荐
- 认识JavaWeb,servlet, JSP, Tomcat, http协议,Web服务器
JavaWeb通常指服务器端的Java应用开发. 一般来说,服务器是在网络通信条件下工作的,这就离不开http协议. HTTP协议,是为服务器和客户端通信提供的规范,其中规定了信息的格式,符合规范格式 ...
- NSNotification相关
NSNotification处理过程是一个同步的过程.它的消息回调函数执行的线程跟发送消息代码(也就是postNotification)所在的线程相同,一个Notification发出后,在回调函数执 ...
- CSS 点击事件
:active 伪类向激活(在鼠标点击与释放之间发生的事件)的元素添加特殊的样式. 这个伪类应用于处于激活状态的元素.最常见的例子就是在 HTML 文档中点击一个超链接:在鼠标按钮按下期间,这个链接是 ...
- Redis进阶实践之四Redis的基本数据类型(转载4)
Redis进阶实践之四Redis的基本数据类型 一.引言 今天正式开始了Redis的学习,如果要想学好Redis,必须先学好Redis的数据类型.Redis为什么会比以前的Memchaed等内存缓存软 ...
- Linux 多进程实现方法
1.需求 查找192.168.0.*网段中所有未使用过的IP 2.实现 我们知道查找未使用IP的方法可以使用ping命令完成.对于单个IP的判断,使用命令如下 $ 192.168.0.1 PI ...
- rhel7磁盘管理
一.MBR主引导记录 MBR有512个字节,分为三个部分:第一部分446个字节,存储了引导分区:第二部分64字节为分区表:第三部分2个字节结束符:每个分区需16个字节,所以MBR的模式 ...
- js数组对象--数据格式的转换(字符串,对象的取值与赋值)
材料:提供一份数据:arr=[ {value:335, name:'直接访问'}, {value:310, name:'邮件营销'}, {value:234, name:'联盟广告'}, {value ...
- func 的参数修饰
1.0 在声明一个 Swift的方法的时候,我们一般不去指定参数前面的修饰符,而是直接声明参数: func incrementor(variable : Int) ->Int { } 这个方法接 ...
- 吴裕雄 python 数据处理(3)
import time a = time.time()print(a)b = time.localtime()print(b)c = time.strftime("%Y-%m-%d %X&q ...
- 关于ubuntu14.04,忘记root密码解决方案(经测试,内核3.13和4.2可行)。
网上已经有很多方案啦,我这里就不画蛇添足,直接上链接: http://jingyan.baidu.com/article/c843ea0b9e851077931e4aea.html 注意,有些机子没有 ...