快速上手教你如何簡單實作手動決議JSON、Gson框架技術和FastJson框架技術
- 手動決議JSON、Gson框架技術和FastJson框架技術
- JSON的簡介
- JSON物件轉換為Java物件
- JSON陣列轉換為Java集合
- 復雜的json資料的決議
- JSONFormat工具的安裝
- 特殊的JSON的資料決議
- 安裝Gson
- 使用Gson將Json格式的字串轉換為Java物件
- 使用Gson將Json格式的字串轉換為Java物件的List
- 使用Gson將java物件轉換為JSON字串
- 使用Gson將List轉換為JSON字串
- 如何匯入FastJson包(其用法和Gson差不多)
- 使用FastJson將Json格式的字串轉換為Java物件
- 使用Fastjson將Json格式的字串轉換為Java物件的List
- 使用FastJson將java物件轉換為JSON字串
- 使用Fastjson將List轉換為JSON字串
手動決議JSON、Gson框架技術和FastJson框架技術
接下來這段時間我會不定期的更新博客,大多數是關于Android方面,后續也會提供一些面試經驗等等,
JSON的簡介
JSON(JavaScript Object Notation, JS 物件簡譜) 是一種輕量級的資料交換格式,決議Json資料首先是需要獲取或者創建一個json資料,然后再一步步把資料進行決議,在接下來每次做測驗的時候,我都會給大家提供一個json的測驗資料,
JSON物件轉換為Java物件
測驗資料:
{
“id”: 2,
“name”: “wcl”,
“price”: 520
}
決議json資料的時候,第一步我們需要去獲取json資料,然后才開始決議,
在決議資料的時候有兩種方法:
- 采用jsonObject.getInt(),jsonObject.getString(),等方法去獲取資料
- 采用jsonObject.optInt(),jsonObject.optString(),等方法去獲取資料
兩種方式都可以獲得資料,沒有什么多大的區別,建議采用第二種方式,因為第二種方式不會報告空指標例外的情況,

我在這里創建了一個Demo_1的class檔案主要是為了存盤決議后的json物件,
JSON陣列轉換為Java集合
json資料:
[
{
“id”: 2,
“name”: “wcl”,
“price”: 520
},
{
“id”: 3,
“name”: “czl”,
“price”: 520
}
]
決議JSON陣列一般采用JSONArray去決議

復雜的json資料的決議
json資料
{
“re_code”: “1000”,
“date”: {
“count”: 2,
“items”: [{
“id”: 2,
“name”: “wcl”,
“price”: 520
},
{
“id”: 3,
“name”: “czl”,
“price”: 520
}
]
},
“re_msg”: “success”
}

JSONFormat工具的安裝


這一款工具是幫助我們快速生成JSON資料所對應的的Java物件的,使用方法Alt+Enter+s

特殊的JSON的資料決議
JSON資料:
{
“re_code”: “1000”,
“date”: {
“items”: {
“0”: {
“id”: 2,
“name”: “wcl”,
“price”: 520
},
“1”: {
“id”: 3,
“name”: “czl”,
“price”: 520
}
}
}
}
為什么說這是一個特殊的JSON資料呢,因為數字在Java中不能作為類名的,當我們用JSONFormat工具時會發現它并不會幫我正確的創建,那么我們該怎么辦呢?
首先創建一個class類
import java.util.List;
public class Demo_3 {
/**
* re_code : 1000
* date : {"items":{"0":{"id":2,"name":"wcl","price":520},"1":{"id":3,"name":"czl","price":520}}}
*/
private String re_code;
private List<FileBean> list;
@Override
public String toString() {
return "Demo_3{" +
"re_code='" + re_code + '\'' +
", list=" + list +
'}';
}
public String getRe_code() {
return re_code;
}
public void setRe_code(String re_code) {
this.re_code = re_code;
}
public List<FileBean> getList() {
return list;
}
public void setList(List<FileBean> list) {
this.list = list;
}
public static class FileBean{
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
private String name ;
private int price;
@Override
public String toString() {
return "FileBean{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
'}';
}
}
}
其次我們再來決議JSON資料
package com.c201801080119.demo2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Button button;
private TextView textView;
private TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitView();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*首先獲取或創建json資料*/
String json="{\n" +
"\t\"re_code\": \"1000\",\n" +
"\t\"date\": {\n" +
"\t\t\"items\": {\n" +
"\t\t\t\"0\": {\n" +
"\t\t\t\t\"id\": 2,\n" +
"\t\t\t\t\"name\": \"wcl\",\n" +
"\t\t\t\t\"price\": 520\n" +
"\t\t\t},\n" +
"\t\t\t\"1\": {\n" +
"\t\t\t\t\"id\": 3,\n" +
"\t\t\t\t\"name\": \"czl\",\n" +
"\t\t\t\t\"price\": 520\n" +
"\t\t\t}\n" +
"\t\t}\n" +
"\t}\n" +
"}";
Demo_3 demo_3=new Demo_3();
/*決議json資料*/
try {
/*第一層決議*/
JSONObject jsonObject=new JSONObject(json);
String re_code = jsonObject.optString("re_code");
JSONObject list = jsonObject.optJSONObject("date");
/*第一層封裝*/
demo_3.setRe_code(re_code);
List<Demo_3.FileBean> lists=new ArrayList<>();
demo_3.setList(lists);
/*第二層決議*/
for(int i=0;i<list.length();i++){
JSONObject jsonObject1 = list.optJSONObject(i + "");
if(jsonObject1!=null){
int id = jsonObject1.optInt("id");
String name = jsonObject1.optString("name");
int price = jsonObject1.optInt("price");
/*第二層封裝*/
Demo_3.FileBean fileBean=new Demo_3.FileBean();
fileBean.setId(id);
fileBean.setName(name);
fileBean.setPrice(price);
lists.add(fileBean);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
/*列印json資料*/
textView.setText(json);
textView1.setText(demo_3.toString());
}
});
}
private void InitView(){
textView=findViewById(R.id.textView);
button=findViewById(R.id.button);
textView1=findViewById(R.id.textView2);
}
}
安裝Gson

使用Gson將Json格式的字串轉換為Java物件
json資料:
{
“id”: 2,
“name”: “wcl”,
“price”: 520
}

使用Gson將Json格式的字串轉換為Java物件的List
json資料
[{
“id”: 2,
“name”: “wcl”,
“price”: 520
},
{
“id”: 3,
“name”: “czl”,
“price”: 520
}
]

使用Gson將java物件轉換為JSON字串

使用Gson將List轉換為JSON字串

如何匯入FastJson包(其用法和Gson差不多)

使用FastJson將Json格式的字串轉換為Java物件
json資料:
{
“id”: 2,
“name”: “wcl”,
“price”: 520
}

使用Fastjson將Json格式的字串轉換為Java物件的List
json資料
[{
“id”: 2,
“name”: “wcl”,
“price”: 520
},
{
“id”: 3,
“name”: “czl”,
“price”: 520
}
]

使用FastJson將java物件轉換為JSON字串

使用Fastjson將List轉換為JSON字串

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272331.html
標籤:其他
