詳談JSON與Javabean轉(zhuǎn)換的幾種形式
JSON格式的數(shù)據(jù)傳遞是最常用的方法之一,以下列出了常用的幾種形態(tài)以及與Javabean之間的轉(zhuǎn)換:
String json1="{'name':'zhangsan','age':23,'interests':[{'interest':'籃球','colors':['綠色','黃色']},{'interest':'足球','colors':['紅色','藍(lán)色']}]}";
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}";
首先,此處的轉(zhuǎn)化依賴兩個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、數(shù)組形式的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數(shù)組
*/
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、內(nèi)嵌JSON形式的JSON與GSON解析:
/**
* 內(nèi)嵌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);
}
}
/**
* 內(nèi)嵌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轉(zhuǎn)換成Json
Gson gson = new Gson();
String jsonStr = gson.toJson(userBean);
System.out.println(jsonStr);
return jsonStr;
}
}
僅供參考,如有雷同,純屬巧合^_^
以上這篇詳談JSON與Javabean轉(zhuǎn)換的幾種形式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
細(xì)數(shù)java for循環(huán)中的那些坑
這篇文章主要介紹了Java for循環(huán)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
idea2020導(dǎo)入spring5.1的源碼詳細(xì)教程
這篇文章主要介紹了idea2020導(dǎo)入spring5.1的源碼的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
MyEclipse8.6首次運(yùn)行maven項(xiàng)目圖標(biāo)上沒有小M的標(biāo)識怎么解決
myeclipse8.6導(dǎo)入maven項(xiàng)目后識別為普通java項(xiàng)目,即項(xiàng)目圖標(biāo)上沒有小M的標(biāo)識。這時是無法直接運(yùn)行的,怎么解決這一問題呢?下面小編給大家?guī)砹私鉀Q方案,需要的朋友參考下吧2016-11-11
Spring零基礎(chǔ)入門WebFlux響應(yīng)式編程
Spring 提供了兩個并行堆棧,一種是基于帶有 Spring MVC 和 Spring Data 結(jié)構(gòu)的 Servlet API,另一個是完全反應(yīng)式堆棧,它利用了 Spring WebFlux 和 Spring Data 的反應(yīng)式存儲庫,這篇文章主要介紹了Spring-webflux 響應(yīng)式編程,需要的朋友可以參考下2022-10-10
java實(shí)現(xiàn)jdbc查詢結(jié)果集result轉(zhuǎn)換成對應(yīng)list集合
本文給大家匯總介紹了java實(shí)現(xiàn)jdbc查詢結(jié)果集result轉(zhuǎn)換成對應(yīng)list集合,十分的簡單,有相同需求的小伙伴可以參考下。2015-12-12
Java JDBC連接Kerberos認(rèn)證的HIVE和Impala方式
本文主要介紹了HiveJDBC和ImpalaJDBC的使用方法,包括版本對應(yīng)、Maven安裝、主機(jī)名配置、端口開通、JDBC連接和Kerberos認(rèn)證等2025-02-02

