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) 是一个业界的 ...
随机推荐
- Spring BeanUtils简单使用
引入包 <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-be ...
- 解决jsfl 弹出警告
fl.showIdleMessage(false);
- get return value of python in shell
from: https://stackoverflow.com/questions/2115615/assigning-value-to-shell-variable-using-a-function ...
- 命名空间与use
以下是自己读PHP手册命名空间这一节的一些笔记,还有自己上机做命名空间测试的一些整理,原创博客,有错欢迎指正: 1.命名空间声明必须是第一条语句,若没有声明命名空间的脚本,则被认为是全局空间的脚本.若 ...
- Zabbix笔记
简单检查中的icmppingloss[<target>,<packets>,<interval>,<size>,<timeout>] 结 ...
- 记一个pg连接数过多的异常
java中使用数据库连接池,如果在部署的时候,操作不慎,可能出现典型的连接池爆满的问题 org.postgresql.util.PSQLException: FATAL: sorry, too man ...
- 计算机网络协议包头赏析-IP
上次和大家聊了聊以太网的帧格式,本文会讲解IP数据报格式的定义. == 开门见山,先上图: 任何一个IP数据报都是由首部和数据两部分组成,而且首部基本是固定长度的,长度为20字节.这一点很重要,其他都 ...
- plsql和tsql常用函数比对
http://www.jb51.net/list/list_154_1.htm 数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value fro ...
- week06 07 创建RPC SERVER 换个镜像安装下载
RPC server 使用python类库 https://pypi.org/project/python-jsonrpc/ 和NPM 不一样 他没有global选项 他安装的就是全局的安装的类库叫p ...
- Oracle Oracle数据库 迁移到 SQL Server上
原地址:https://blog.csdn.net/LongtengGensSupreme/article/details/81355181