JSON与Javabean转换的几种形式
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转换的几种形式的更多相关文章
- C# 对象与JSON字符串互相转换的三种方式
C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...
- JSON字符串互相转换的三种方式和性能比较
C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...
- C#将集合和Json格式互相转换的几种方式
1.使用微软自带的System.Web.Extensions.dll转换,该DLL文件一般存在于如下路径:c:\Program Files\Reference Assemblies\Microsoft ...
- 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等,我为大家一一做简 ...
- JSON详解以及可以把javabean转换成json串的json-lib应用
JSON 1. json是什么 它是js提供的一种数据交换格式! 2. json的语法 {}:是对象! 属性名必须使用双引号括起来!单引不行!!! 属性值:null,数值,字符串,数组:使用[]括起来 ...
- JavaBean和json数据之间的转换(一)简单的JavaBean转换
1.为什么要使用json? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,因为其高性能.可读性强的原因,成为了现阶段web开发中前后端交互数据的主要数据 ...
- Json与javaBean之间的转换工具类
/** * Json与javaBean之间的转换工具类 * * {@code 现使用json-lib组件实现 * 需要 * json-lib-2.4-jdk15.jar * ...
- JavaBean到JSon格式的转换例子的代码
内容过程,把做工程过程较好的内容片段备份一次,如下的内容是关于 JavaBean到JSon格式的转换例子的内容,应该对各朋友有一些用处. User u = new User(); u.setId(1) ...
随机推荐
- table行拖拽
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- NOIP 2014 提高组 Day1
期望得分:100+100+50=250 实际得分:100+100+50=250 此次NOIP ZJ省一分数线:500,SD:345 https://www.luogu.org/problem/lis ...
- Python进行数据分析(一)初步学习 对时区进行计数
time_zones[:10] Out[19]: [u'America/New_York', u'America/Denver', u'America/New_York', u'America/Sao ...
- Python学习笔记(四十八)POP3收取邮件
收取邮件就是编写一个MUA作为客户端,从MDA把邮件获取到用户的电脑或者手机上.收取邮件最常用的协议是POP协议,目前版本号是3,俗称POP3. Python内置一个poplib模块,实现了POP3协 ...
- ASP.Net中表单POST到其他页面的方法
在ASP中,我们通常把表单提交到另外一个页面(接受数据页面).但是在ASP.NET中,服务端表单通常都是提交到本页面的,如果我设置 form1.action="test.aspx" ...
- 关于static关键字
static用于修饰成员(成员变量,成员函数),不能修饰局部变量被修饰的变量和函数是静态的,可被多个对象共享,节省内存可以直接被类名调用++++++++++++++++++++++++++++++++ ...
- NYOJ 231 Apple Tree (树状数组)
题目链接 描述 There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in t ...
- 21、利用selenium进行Web测试
一.案例实施步骤思路分析 1.寻包 2.指定浏览器(实例化浏览器对象) 3.打开项目 4.找到元素(定位元素) 5.操作元素 6.暂停 7.关闭二.元素定位[重点] 1.id 说明:通过元素的id属性 ...
- Python ctypes中cast/py_object用法
class ctypes.py_object Represents the C PyObject * datatype. Calling this without an argument create ...
- nesC编程入门
1.接口 NesC程序主要由各式组件(component)构成,组件和组件之间通过特定的接口(interface)互相沟通.一个接口内声明了提供相关服务的方法(C语言函数).例如数据读取接口(Read ...