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. 2015/10/9 Python基础(21):可调用和可执行对象

    在Python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的Python脚本,或执行一个磁盘上的文件,或通过网络来运行文件.这完全取决于想要干什么.特定的环境包括: 在当前脚本继续运行 创 ...

  2. 桥接模式_NAT模式_仅主机模式_模型图.ziw

      2017年1月12日, 星期四 桥接模式_NAT模式_仅主机模式_模型图   null

  3. 【CodeForces】899 F. Letters Removing

    [题目]F. Letters Removing [题意]给定只含小写字母.大写字母和数字的字符串,每次给定一个范围要求删除[l,r]内的字符c(l和r具体位置随删除变动),求m次操作后的字符串.n&l ...

  4. linux 在命令行中通过conda使用anaconda

    在 ~/.bash_profile中添加 export PATH="/home/taoke/anaconda/bin:$PATH"

  5. react CRA antd 按需加载配置 lessloader

    webpack配置 webpack.config.dev.js, webpack.config.prod同理. 'use strict'; const autoprefixer = require(' ...

  6. tensorflow.nn.bidirectional_dynamic_rnn()函数的用法

    在分析Attention-over-attention源码过程中,对于tensorflow.nn.bidirectional_dynamic_rnn()函数的总结: 首先来看一下,函数: def bi ...

  7. php的发展历史

    php最初就是为了快速构建一个web页面而迅速被大家广为接受的.它的好处是在代码中能内嵌html的代码,从而让程序员能再一个页面中同时写html代码和php代码就能生成一个web页面. 这篇文章用时间 ...

  8. 多维数组的字符依次输出,用python实现

    #-*- coding=utf-8 -*-listm=["s","l","z","x","l",&q ...

  9. 商城项目(ssm+dubbo+nginx+mysql统合项目)总结(2)

    我不会在这里贴代码和详细步骤什么的,我觉得就算我把它贴出来,你们照着步骤做还是会出很多问题,我推荐你们去看一下黑马的这个视频,我个人感觉很不错,一步一步走下来可以学到很多东西.另外,视频和相关文档的话 ...

  10. 数据库与sql注入的相关知识

    数据库与sql注入的相关知识 sql语句明显是针对数据库的一种操作,既然想通过sql注入的方法来拿取数据那么就要先了解一下如何的去操作数据库,这方面并不需要对数据库有多么的精通但是如果了解掌握了其中的 ...