java對(duì)象與json對(duì)象間的相互轉(zhuǎn)換的方法
工程中所需的jar包,因?yàn)樵诰W(wǎng)上不太好找,所以我將它放到我的網(wǎng)盤(pán)里了,如有需要隨便下載。
1.簡(jiǎn)單的解析json字符串
首先將json字符串轉(zhuǎn)換為json對(duì)象,然后再解析json對(duì)象,過(guò)程如下。
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
根據(jù)json中的鍵得到它的值
String name = jsonObject.getString("name");
int num = jsonObject.getInt("num");
String sex = jsonObject.getString("sex");
int age = jsonObject.getInt("age");
2.將json字符串轉(zhuǎn)換為java對(duì)象
同樣先將json字符串轉(zhuǎn)換為json對(duì)象,再將json對(duì)象轉(zhuǎn)換為java對(duì)象,如下所示。
JSONObject obj = new JSONObject().fromObject(jsonStr); //將json字符串轉(zhuǎn)換為json對(duì)象
將json對(duì)象轉(zhuǎn)換為java對(duì)象
Person jb = (Person)JSONObject.toBean(obj,Person.class); //將建json對(duì)象轉(zhuǎn)換為Person對(duì)象
3.將java對(duì)象轉(zhuǎn)換為json字符串
先將java對(duì)象轉(zhuǎn)換為json對(duì)象,在將json對(duì)象轉(zhuǎn)換為json字符串
JSONObject json = JSONObject.fromObject(obj); //將java對(duì)象轉(zhuǎn)換為json對(duì)象 String str = json.toString();//將json對(duì)象轉(zhuǎn)換為字符串
完整代碼如下:
package baz.parse;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import baz.bean.Person;
public class ParseJson {
private String jsonStr;
public ParseJson() {
}
public ParseJson(String str){
this.jsonStr = str;
}
/**
* 解析json字符串
*/
public void parse(){
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
String name = jsonObject.getString("name");
int num = jsonObject.getInt("num");
String sex = jsonObject.getString("sex");
int age = jsonObject.getInt("age");
System.out.println(name + " " + num + " " + sex + " " + age);
}
//將json字符串轉(zhuǎn)換為java對(duì)象
public Person JSON2Object(){
//接收{(diào)}對(duì)象,此處接收數(shù)組對(duì)象會(huì)有異常
if(jsonStr.indexOf("[") != -1){
jsonStr = jsonStr.replace("[", "");
}
if(jsonStr.indexOf("]") != -1){
jsonStr = jsonStr.replace("]", "");
}
JSONObject obj = new JSONObject().fromObject(jsonStr);//將json字符串轉(zhuǎn)換為json對(duì)象
Person jb = (Person)JSONObject.toBean(obj,Person.class);//將建json對(duì)象轉(zhuǎn)換為Person對(duì)象
return jb;//返回一個(gè)Person對(duì)象
}
}
package baz.bean;
public class Person {
private String name;
private int num;
private String sex;
private int age;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, int num, String sex, int age) {
super();
this.name = name;
this.num = num;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
將java對(duì)象轉(zhuǎn)換為json字符串
package baz.cons;
import net.sf.json.JSONObject;
/**
* 將java對(duì)象轉(zhuǎn)換為json字符串
* @author Administrator
*
*/
public class ConsJson {
public ConsJson() {
// TODO Auto-generated constructor stub
}
public String Object2Json(Object obj){
JSONObject json = JSONObject.fromObject(obj);//將java對(duì)象轉(zhuǎn)換為json對(duì)象
String str = json.toString();//將json對(duì)象轉(zhuǎn)換為字符串
return str;
}
}
測(cè)試類(lèi):
package baz.test;
import java.util.List;
import baz.bean.Person;
import baz.cons.ConsJson;
import baz.parse.ParseJson;
public class Test {
public static void main(String[] args) {
//將字符串轉(zhuǎn)換為json對(duì)象,然后根據(jù)建得到相應(yīng)的值
ParseJson pj = new ParseJson("{\"name\":\"gu\",\"num\":123456,\"sex\":\"male\",\"age\":24}");
pj.parse();
//將一個(gè)json字符串轉(zhuǎn)換為java對(duì)象
Person p = pj.JSON2Object();
System.out.println("Name:" + p.getName());
System.out.println("Num:" + p.getNum());
System.out.println("Sex:" + p.getSex());
System.out.println("age:" + p.getAge());
//將一個(gè)java對(duì)象轉(zhuǎn)換為Json字符串
Person p1 = new Person("gu1",123,"male",23);
ConsJson cj = new ConsJson();
String str1 = cj.Object2Json(p1);
System.out.println(str1);
}
}
測(cè)試輸出如下:
gu 123456 male 24
Name:gu
Num:123456
Sex:male
age:24
{"age":23,"name":"gu1","num":123,"sex":"male"}
這只是最簡(jiǎn)單使用方法,其他的使用我會(huì)在后期中更新。以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java中常用的json,jsonarray,map數(shù)據(jù)結(jié)構(gòu)與對(duì)象互轉(zhuǎn)詳解
- Java中對(duì)象?和?json?互轉(zhuǎn)四種方式?json-lib、Gson、FastJson、Jackson
- java中json和對(duì)象之間相互轉(zhuǎn)換的運(yùn)用
- JAVA中JSONObject對(duì)象和Map對(duì)象之間的相互轉(zhuǎn)換
- Java實(shí)現(xiàn)Json字符串與Object對(duì)象相互轉(zhuǎn)換的方式總結(jié)
- 詳談Java中net.sf.json包關(guān)于JSON與對(duì)象互轉(zhuǎn)的坑
- 基于JSON和java對(duì)象的互轉(zhuǎn)方法
- java中實(shí)體類(lèi)和JSON對(duì)象之間相互轉(zhuǎn)化
- Java中Json字符串和Java對(duì)象的互轉(zhuǎn)
相關(guān)文章
詳解如何在項(xiàng)目中應(yīng)用SpringSecurity權(quán)限控制
本文主要介紹了如何在項(xiàng)目中應(yīng)用SpringSecurity權(quán)限控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
詳解使用spring aop實(shí)現(xiàn)業(yè)務(wù)層mysql 讀寫(xiě)分離
本篇文章主要介紹了使用spring aop實(shí)現(xiàn)業(yè)務(wù)層mysql 讀寫(xiě)分離,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
Java類(lèi)型轉(zhuǎn)換valueOf與parseInt區(qū)別探討解析
這篇文章主要為大家介紹了Java類(lèi)型轉(zhuǎn)換valueOf與parseInt區(qū)別探討解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Spring Security單項(xiàng)目權(quán)限設(shè)計(jì)過(guò)程解析
這篇文章主要介紹了Spring Security單項(xiàng)目權(quán)限設(shè)計(jì)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
SpringBoot整合ES多個(gè)精確值查詢(xún) terms功能實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot整合ES多個(gè)精確值查詢(xún) terms功能實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06

