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. JSP页面java代码报错:Purgoods cannot be resolved to a type

    错误提示 : Purgoods cannot be resolved to a type Purgoods不能解析为一个类型 原因 : 缺少引入Purgoods类 页面中引入java类,执行java代 ...

  2. php初级之数组与 类初级

    PHP 是后端脚本语言,回顾一下: 1.1 PHP 数组: <?php $user = array(); // 定义一个数组 $user[0] = 'zhangsan'; // 给数组赋值 $u ...

  3. libcurl+OpenSSL 库分享

    首先,我要感谢这两个博客给我的帮助: https://www.cnblogs.com/findumars/p/7496122.html https://blog.csdn.net/yannanxiu/ ...

  4. sass实战演练01 - 外部文件引用和变量

    SASS是什么? 目前前端开发中css已经是公认的”前端程序员必须掌握”的知识,最早的css编写都是手工一条条写出来的,工作量大.不利于维护. 而sass的存在使得css开发可以像写代码一样最终生成一 ...

  5. Oracle数据库安装指南

    文档使用声明 1.安装指导仅限测试环境(非生产环境)安装使用,生产环境oracle数据库建议按公司要求安装. 安装环境 1.SuSE10/SuSE11(64位) + Oracle11gR2 工具和安装 ...

  6. MySQL字符集介绍及配置

    目录 1.MySQL编码集 2.修改字符集 3.MySQL数据库中字符集转换流程 4.修改现有字符集 1.MySQL编码集 查看MySQL支持的字符集 mysql> show character ...

  7. search() 方法解析

    search()方法支持正则表达式的String对象的方法. 好,我们直接来贴代码,看效果,从实践理解透析方法的知识点和实际运用. var str="Visit W3School!" ...

  8. (转)关闭win10的Skype

    https://blog.csdn.net/qq_38285661/article/details/86663849 使用win10的小伙伴们,有没有发现一个不用的功能Skype,假如你想卸载又怕卸不 ...

  9. Java模板引擎之freemarker简介

  10. idea 新写的jsp没有找到