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) 是一个业界的 ...
随机推荐
- Nginx代理webSocket经常中断的解决方案, 如何保持长连接
背景 这天气够热的,要处理的事情也够多的.... 1 2 想看解决的,直接 ctrl+f搜索关键字‘配置点’ 开始前交代(想看原因的看这个,个人观点,不代表正确) 解说:今天用nginx反代通讯项目, ...
- Redis脚本
8.启动 /usr/local/bin/redis-server /etc/redis/redis.conf ./redis-server /home/work/redis/redis.conf &a ...
- APP-8.1-百度语音应用
1.百度语音登录地址 http://yuyin.baidu.com/ 2.控制台创建应用 3.生成签名 3.1Postman软件应用 APP-8.2-Postman应用 3.2Postman执行 UR ...
- NGUI 背景图自适应
背景图UISprite组件调整如下: UIRoot设置: 不保持比例自适应: 保持宽与屏幕宽一致,高度随宽的缩放比例进行缩放:
- 在page cache中的页,如果当时没有进程read或者write,引用计数到底该为多少
在一次偶然的机会,在研究如何降低pagecache占用的过程中,走查了 invalidate_mapping_pages的代码: 通过调用 __pagevec_lookup 在radix树中收集一部分 ...
- LINUX系统一一常用命令
前言 LINUX UNIX Centos RedHat Ubuntu SHELL shell脚本 shell shell命令 类似windows系统的bat 批处理文件 里面都是脚本 CentOS6. ...
- ArcGIS案例学习笔记-点集中最近点对和最远点对
ArcGIS案例学习笔记-点集中最近点对和最远点对 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于点图层,查找最近的点对和最远的点对 数据: 方法: 1. ...
- javascript原型链中 this 的指向
为了弄清楚Javascript原型链中的this指向问题,我写了个代码来测试: var d = { d: 40 }; var a = { x: 10, calculate: function (z) ...
- SQL Server GROUP BY 后 拼接 字符串
原文地址:https://blog.csdn.net/u010673842/article/details/79637618 select ID, ,,'') from class a group b ...
- SAP HANA 常用函数
常用语句: 获取上年年份:SELECT TO_CHAR (current_date, 'YYYY')-1 "to char" FROM DUMMY SAP HANA 常用函数: ...