日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java json解析哪个好_java常用的几种json解析工具使用

發(fā)布時(shí)間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java json解析哪个好_java常用的几种json解析工具使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

頭痛,某群初學(xué)朋友問我他解析json怎么和他以前學(xué)的不一樣,我本著說百度個(gè)教程給他,一搜索亂七八糟復(fù)制來復(fù)制去的博客一大堆,注釋不寫注視,一個(gè)是gson 一個(gè)是fastJson標(biāo)題也沒寫明白,行那就我來自己敲一遍,我來總結(jié)一下,不對的地方請指教。

首先json的官方網(wǎng)站

再次我們常用的解析工具

1、JSON 官方出品(非常多種,這里使用org.json)

2、GSON 谷歌出品

3、FastJSON 阿里出品

4、jackson SpringMVC內(nèi)置解析

逐一試用一下,所需jar包,直接導(dǎo)入或maven自行找加載方式

測試前創(chuàng)建兩個(gè)類

package json;

public class Person {

private int id;

private String name;

private int age;

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 getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Person{" +

"id=" + id +

", name='" + name + '\'' +

", age=" + age +

'}';

}

}

package json;

import java.util.ArrayList;

public class Departamentas {

private int id;

private String name;

private ArrayList persons;

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 ArrayList getPersons() {

return persons;

}

public void setPersons(ArrayList persons) {

this.persons = persons;

}

@Override

public String toString() {

return "Departamentas{" +

"id=" + id +

", name='" + name + '\'' +

", persons=" + persons +

'}';

}

}

一、官方org.json(麻煩一批不好用)

使用代碼如下

package json;

import org.json.JSONArray;

import org.json.JSONObject;

import org.junit.jupiter.api.Test;

public class JsonTest {

@Test

public void jsonOrg() {

//解析json

String json1 = "{'id':1,'name':'bai123'," +

"'person':[" +

"{'id':5,'name':'白藍(lán)一','age':18}," +

"{'id':6,'name':'白藍(lán)二','age':18}" +

"]}";

JSONObject jObject1 = new JSONObject(json1);

//獲取對應(yīng)key的值

System.out.println(jObject1.get("name"));

//拿到person數(shù)組

JSONArray person1 = jObject1.getJSONArray("person");

//獲取對應(yīng)索引的值

System.out.println(person1.get(0));

//--------------------------------------------------------

//生成json

JSONObject jo1 = new JSONObject();

jo1.put("id", 7);

jo1.put("name", "白藍(lán)三");

jo1.put("age", 18);

JSONArray ja2 = new JSONArray();

ja2.put(jo1);

JSONObject jo3 = new JSONObject();

jo3.put("id", 2);

jo3.put("name", "bai124");

jo3.put("person", ja2);

String json = jo3.toString();

System.out.println(json);

}

}

打印結(jié)果

image.png

二、Gson 比較好用

上代碼,非常方便

package json;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;

public class GsonTest {

@Test

public void gson() {

//解析json

String json1 = "{'id':1,'name':'bai123'," +

"'persons':[" +

"{'id':5,'name':'白藍(lán)一','age':18}," +

"{'id':6,'name':'白藍(lán)二','age':18}" +

"]}";

Gson gson = new Gson();

Departamentas departamentas = gson.fromJson(json1, Departamentas.class);

System.out.println(departamentas);

//生成json

departamentas.setName("bai124");

String json = gson.toJson(departamentas);

System.out.println(json);

}

}

打印結(jié)果

image.png

三、fastjson 效率高非常好用

package json;

import com.alibaba.fastjson.JSON;

import org.junit.jupiter.api.Test;

import java.util.List;

public class FastTest {

@Test

public void fast() {

//解析json

String json1 = "{'id':1,'name':'bai123'," +

"'persons':[" +

"{'id':5,'name':'白藍(lán)一','age':18}," +

"{'id':6,'name':'白藍(lán)二','age':18}" +

"]}";

String json2 = "['白藍(lán)1','白藍(lán)2','白藍(lán)3']";

Departamentas departamentas = JSON.parseObject(json1, Departamentas.class);

System.out.println(departamentas);

//數(shù)組解析

List list = JSON.parseArray(json2, String.class);

System.out.println(list);

//生成json

departamentas.setName("生成");

String s = JSON.toJSONString(departamentas);

System.out.println(s);

}

}

打印結(jié)果

image.png

四、jackson SpringMVC內(nèi)置的解析器用的就是這個(gè)

注意事項(xiàng)

//允許出現(xiàn)特殊字符和轉(zhuǎn)義符

mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ;

//允許出現(xiàn)單引號

mapper.configure(Feature.ALLOW_SINGLE_QUOTES, true) ;

package json;

import com.fasterxml.jackson.core.type.TypeReference;

import com.fasterxml.jackson.databind.ObjectMapper;

import org.junit.jupiter.api.Test;

import java.io.IOException;

import java.util.ArrayList;

public class JackTest {

@Test

public void jack() throws IOException {

//解析json

String json1 = "{\"id\":1,\"name\":\"bai123\",\"persons\":[{\"id\":1,\"name\":\"白藍(lán)1\",\"age\":20}]}";

String json2 = "[\"白藍(lán)1\",\"白藍(lán)2\",\"白藍(lán)3\"]";

ObjectMapper mapper = new ObjectMapper();

Departamentas departamentas = mapper.readValue(json1, Departamentas.class);

System.out.println(departamentas);

//2、

ArrayList list = mapper.readValue(json2,

new TypeReference>() {

});

System.out.println(list);

//生成json

String json=mapper.writeValueAsString(departamentas);

System.out.println(json);

}

}

打印結(jié)果

image.png

本文是幾個(gè)工具的簡單使用,其他方法請自行查詢相關(guān)API,例如解決時(shí)間格式化之類的,可以使用對應(yīng)的注解,并且要注意的是除了官方的其他3個(gè)都是需要使用標(biāo)準(zhǔn)bean.

轉(zhuǎn)載請注明來源。

總結(jié)

以上是生活随笔為你收集整理的java json解析哪个好_java常用的几种json解析工具使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。