JSON格式的数据传递是最常用的方法之一,以下列出了常用的几种形态以及与Javabean之间的转换:

  String json1="{'name':'zhangsan','age':23,'interests':[{'interest':'篮球','colors':['绿色','黄色']},{'interest':'足球','colors':['红色','蓝色']}]}";
  String json2="[{'name':'zhangsan'},{'name':'lisi'},{'name':'王五'}]";
  String json3="{'1':{'name':'zhangsan'},'3':{'name':'lisi'},'4':{'name':'wangwu'}}";//map
  String json4="{'name':'zhangsan','age':23}";

首先,此处的转化依赖两个JAR包

     <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>

其次,封装的Javabean代码如下

 import java.util.List;

 public class UserBean {

     private String name;

     private Integer age;

     private List<InterestBean> interests;

     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;
} public List<InterestBean> getInterests() {
return interests;
} public void setInterests(List<InterestBean> interests) {
this.interests = interests;
} class InterestBean{
private String interest; private List<String> colors; public String getInterest() {
return interest;
} public void setInterest(String interest) {
this.interest = interest;
} public List<String> getColors() {
return colors;
} public void setColors(List<String> colors) {
this.colors = colors;
} } }

1、普通的json4格式的JSON解析:

 public void testParseJson(){

         JSONObject jsonObj = new JSONObject(json4);
String name = jsonObj.getString("name");
int age = jsonObj.getInt("age");
System.out.println(name);
System.out.println(age);
UserBean user = new UserBean();
user.setAge(age);
user.setName(name); }

2、数组形式的JSON解析以及GSON解析:

 public void testJsonArray(){
JSONArray jsonArray = new JSONArray(json2);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
String name = jsonObj.getString("name");
System.out.println(name); }
}
     /**
* 解析json数组
*/
public void testParseListJson(){
Gson gson = new Gson();
Type type = new TypeToken<List<UserBean>>(){}.getType();
List<UserBean> users = gson.fromJson(json2, type);
for(UserBean user:users){
System.out.println(user.getName());
}
}

3、内嵌JSON形式的JSON与GSON解析:

 /**
* 内嵌JSON解析
*/
public void testParseJson1(){
JSONObject rootJson = new JSONObject(json1);
JSONArray jsonInterestArray = rootJson.getJSONArray("interests");
for (int i = 0; i < jsonInterestArray.length(); i++) {
JSONObject interestJsonObj = jsonInterestArray.getJSONObject(i);
String interest = interestJsonObj.getString("interest");
System.out.println(interest);
Object obj = interestJsonObj.get("colors");
System.out.println(obj);
}
}
 /**
* 内嵌GSON解析
*/
public void testSimpleJson(){
Gson gson = new Gson();
UserBean user = gson.fromJson(json1, UserBean.class);
System.out.println(user.getName());
System.out.println(user.getAge());
System.out.println(user.getInterests().size());
List<InterestBean> list = user.getInterests();
for(InterestBean bean:list) {
System.out.println(bean.getInterest());
List<String> colors = bean.getColors();
for(String color:colors){
System.out.println(color);
}
}
}

4、Map形式的JSON的GSON解析:

     /**
* 解析一个map类型的json
*/
public void testParseMapJson(){
Gson gson = new Gson();
Type type = new TypeToken<Map<String,UserBean>>(){}.getType();
Map<String,UserBean> map = gson.fromJson(json3, type);
Set<String> keys = map.keySet();
for(String key:keys){
UserBean bean = map.get(key);
System.out.println(key);
System.out.println(bean.getName());
}
}

5、将一个JavaBean对象封装成JSON格式

     /**
* 将一个JavaBean对象封装成JSON格式
*/
public String testJavaBean2Json(){
UserBean userBean = new UserBean();
userBean.setName("zhangsan");
userBean.setAge(33);
List<InterestBean> list = new ArrayList<InterestBean>();
InterestBean bean1 = new UserBean().new InterestBean();
bean1.setInterest("篮球1");
InterestBean bean2 = new UserBean().new InterestBean();
bean2.setInterest("篮球2");
list.add(bean1);
list.add(bean2);
userBean.setInterests(list);
//将User Bean转换成Json
Gson gson = new Gson();
String jsonStr = gson.toJson(userBean);
System.out.println(jsonStr);
return jsonStr;
} }

仅供参考,如有雷同,纯属巧合^_^

JSON与Javabean转换的几种形式的更多相关文章

  1. C# 对象与JSON字符串互相转换的三种方式

    C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...

  2. JSON字符串互相转换的三种方式和性能比较

    C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...

  3. C#将集合和Json格式互相转换的几种方式

    1.使用微软自带的System.Web.Extensions.dll转换,该DLL文件一般存在于如下路径:c:\Program Files\Reference Assemblies\Microsoft ...

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

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

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

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

  6. JSON详解以及可以把javabean转换成json串的json-lib应用

    JSON 1. json是什么 它是js提供的一种数据交换格式! 2. json的语法 {}:是对象! 属性名必须使用双引号括起来!单引不行!!! 属性值:null,数值,字符串,数组:使用[]括起来 ...

  7. JavaBean和json数据之间的转换(一)简单的JavaBean转换

    1.为什么要使用json? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,因为其高性能.可读性强的原因,成为了现阶段web开发中前后端交互数据的主要数据 ...

  8. Json与javaBean之间的转换工具类

    /**  * Json与javaBean之间的转换工具类  *  * {@code 现使用json-lib组件实现  *    需要  *     json-lib-2.4-jdk15.jar  * ...

  9. JavaBean到JSon格式的转换例子的代码

    内容过程,把做工程过程较好的内容片段备份一次,如下的内容是关于 JavaBean到JSon格式的转换例子的内容,应该对各朋友有一些用处. User u = new User(); u.setId(1) ...

随机推荐

  1. zoj 2314 Reactor Cooling (无源汇上下界可行流)

    Reactor Coolinghttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 Time Limit: 5 Seconds ...

  2. JVM调优总结(5):典型配置

    以下配置主要针对分代垃圾回收算法而言. 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理 ...

  3. winform MDI子窗口闪动问题(本人测试100%有效解决闪屏问题)

    将下面的代码随便放到主窗体的任何一个地方 protected override CreateParams CreateParams //解决MDI闪屏 { get { CreateParams cp ...

  4. 你知道吗?.NET Framework 4.5 五个很棒的特性

    简介 自.NET 4.5发布已经过了差不多1年了.但是随着最近微软大多数的发布,与.NET开发者交流的问题显示,开发者仅知道一到两个特性,其他的特性仅仅停留在MSDN并以简单的文档形式存在着. 比如说 ...

  5. ASP.NET 3.5控件和组件开发技术之客户端回发/回调揭密

    本文摘录自<纵向切入ASP.NET 3.5控件和组件开发技术>. 对于服务端控件元素,比如ASP.NET的Button标准服务端控件在提交时可以自动把请求发送到服务端处理,这样的控件我们不 ...

  6. LintCode 510: Maximal Rectangle

    LintCode 510: Maximal Rectangle 题目描述 给你一个二维矩阵,权值为False和True,找到一个最大的矩形,使得里面的值全部为True,输出它的面积 Wed Nov 2 ...

  7. 数组B - 我想我需要一艘船屋

    [题目大意]弗雷德先生正在考虑在路易斯安娜州买一块地造房子,在土地调查中,他了解到由于密西西比河的侵蚀,路易斯安那州正以每年50平方英里的速度变小.弗雷德先生想知道他买的那块地是否会被侵蚀掉,经过进一 ...

  8. 49、是否使用过functools中的函数?其作用是什么?

    functools模块介绍 functools用于高阶函数:指那些作用于函数或者返回其他函数的函数.通常情况下,只要是可以被当做函数调用的对象就是这个模块的目标. functools模块的功能 pyt ...

  9. Coursera在线学习---第一节.梯度下降法与正规方程法求解模型参数比较

    一.梯度下降法 优点:即使特征变量的维度n很大,该方法依然很有效 缺点:1)需要选择学习速率α 2)需要多次迭代 二.正规方程法(Normal Equation) 该方法可以一次性求解参数Θ 优点:1 ...

  10. Linux内核同步原语之原子操作【转】

    转自:http://blog.csdn.net/npy_lp/article/details/7262388 避免对同一数据的并发访问(通常由中断.对称多处理器.内核抢占等引起)称为同步. ——题记 ...