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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

几种常用的JSON解析工具的使用

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

目錄

簡(jiǎn)介:

(1)org.json的使用

(2)net.sf.json的使用

(3)json-simple的使用

(4)gson的使用

(5)jackson的使用

(6)fastjson的使用


簡(jiǎn)介:

現(xiàn)在越來(lái)越多的網(wǎng)站采用JSON來(lái)交換數(shù)據(jù),在Json.org網(wǎng)站上,Java可以使用的解析Json的組件就有超過(guò)20種。

Json官網(wǎng):http://json.org/

頁(yè)面往下拉,可以看到j(luò)ava板塊的json類(lèi)庫(kù):

其中g(shù)son,jackson,fastjson都是我們常用的工具類(lèi),每種工具用起來(lái)可能稍稍有點(diǎn)差別,但都是大同小異,基本上都包含兩大塊JSONObject和JSONArray

JSONObject:普通json對(duì)象

JSONArray:json數(shù)組

這里只簡(jiǎn)單測(cè)試一下JSON的基本生成與解析,復(fù)雜的類(lèi)型與之同理,這里不過(guò)多介紹。

?

(1)org.json的使用

(實(shí)測(cè)最好將該jar包下載下來(lái),然后手動(dòng)導(dǎo)入工程)

<dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20171018</version> </dependency> import org.json.JSONArray; import org.json.JSONObject; import org.junit.Test;/*** java原生json處理*/ public class OrgJsonTest {/*** JSON的初始化*/@Testpublic void test1() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "zhangsan");jsonObject.put("age", 20);jsonObject.put("married", false);System.out.println(jsonObject);// {"name":"zhangsan","married":false,"age":20}JSONArray jsonArray = new JSONArray();jsonArray.put(0, true);jsonArray.put(1, "lisi");jsonArray.put(2, 22);System.out.println(jsonArray);// [true,"lisi",22]}/*** JSON的解析*/@Testpublic void test2() {// 初始化JSONObject jsonObject = new JSONObject("{\"name\":\"zhangsan\",\"married\":false,\"age\":20}");String name = jsonObject.getString("name");int age = jsonObject.getInt("age");boolean married = jsonObject.getBoolean("married");System.out.println("name=" + name + "\nage=" + age + "\nmarried=" + married);// name=zhangsan// age=20// married=falseJSONArray jsonArray = new JSONArray("[true,\"lisi\",22]");boolean arr1 = jsonArray.getBoolean(0);String arr2 = jsonArray.getString(1);int arr3 = jsonArray.getInt(2);System.out.println(arr1 + "\t" + arr2 + "\t" + arr3);}/*** JSONObject和JSONArray的相互嵌套*/@Testpublic void test3() {// 初始化JSONObject jsonObject = new JSONObject("{\"name\":\"zhangsan\",\"married\":false,\"age\":20}");JSONObject address = new JSONObject("{\"address\":\"China\"}");JSONArray education = new JSONArray("[\"小學(xué)\",\"初中\(zhòng)",\"高中\(zhòng)"]");jsonObject.put("addr", address);jsonObject.put("edu", education);System.out.println(jsonObject);// {"edu":["小學(xué)","初中","高中"],"name":"zhangsan","addr":{"address":"China"},"married":false,"age":20}} }

(2)net.sf.json的使用

<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version> </dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version> </dependency> import org.junit.Test;import net.sf.json.JSONArray; import net.sf.json.JSONObject;public class NetsfJSON {/*** 創(chuàng)建JSON*/@Testpublic void test1() {String str = "{\"name\":\"zhangsan\",\"age\":20}";JSONObject json1 = JSONObject.fromObject(str);System.out.println(json1.toString());// {"name":"zhangsan","age":20}JSONObject json2 = new JSONObject();json2.put("name", "zhangsan");json2.put("age", 20);json2.element("telphone", "15000000000");System.out.println(json2);// {"name":"zhangsan","age":20,"telphone":"15000000000"}}/*** 解析JSON*/@Testpublic void test2() {String str = "{\"name\":\"zhangsan\",\"age\":20}";JSONObject json = JSONObject.fromObject(str);String name = json.getString("name");int age = json.getInt("age");System.out.println("name = " + name + ", age = " + age);// name = zhangsan, age = 20}/*** JSONArray*/@Testpublic void test3() {// JSONObject內(nèi)嵌JSONArrayJSONObject json = new JSONObject();json.put("name", "zhangsan");json.put("age", 20);JSONObject json3 = new JSONObject();json3.put("math", 90);json3.put("english", 88);JSONArray array = new JSONArray();array.add(json3);json.put("class", array);System.out.println(json);// {"name":"zhangsan","age":20,"class":[{"math":90,"english":88}]}JSONArray jsonArray = json.getJSONArray("class");System.out.println(jsonArray.toString());// [{"math":90,"english":88}]// 創(chuàng)建JSONArrayJSONArray jsonArray2 = new JSONArray();jsonArray2.add(0, "zhangsan");jsonArray2.add(1, "lisi");jsonArray2.element(2, "wangwu");System.out.println(jsonArray2);// ["zhangsan", "lisi", "wangwu"]// 解析Object object = jsonArray2.get(0);System.out.println(object);// zhangsan} }

(3)json-simple的使用

<dependency><groupId>com.googlecode.json-simple</groupId><artifactId>json-simple</artifactId><version>1.1.1</version> </dependency> import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import org.junit.Test;public class JSONSimple {@Testpublic void test1() throws ParseException {// 創(chuàng)建JSONObject obj = new JSONObject();obj.put("name", "zhangsan");obj.put("age", 20);obj.put("tel", "15000000000");System.out.println(obj);// 解析JSONParser parser = new JSONParser();JSONObject json = (JSONObject) parser.parse(obj.toString());System.out.println(json);Object name = json.get("name");Object age = json.get("age");System.out.println("name = " + name + ", age = " + age);} }

(4)gson的使用

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version> </dependency> public class Person {private String name;private int age; } -----------------------------------------------------------------------------import org.junit.Test; import com.google.gson.Gson;public class GSONTest {@Testpublic void test() {Gson gson = new Gson();Person person = new Person();person.setName("zhangsan");person.setAge(20);String json = gson.toJson(person);System.out.println(json);// {"name":"zhangsan","age":20}Person fromJson = gson.fromJson(json, Person.class);System.out.println(fromJson);// Person [name=zhangsan, age=20]} }

(5)jackson的使用

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.2</version> </dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</version> </dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.2</version> </dependency> import com.fasterxml.jackson.databind.ObjectMapper; import com.zzs.json.bean.Person;public class JacksonTest {@Testpublic void test1() throws IOException {Person person = new Person();person.setName("zhangsan");person.setAge(20);/*** ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中實(shí)現(xiàn)。* ObjectMapper有多個(gè)JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介質(zhì)中。* writeValue(File arg0, Object arg1)把a(bǔ)rg1轉(zhuǎn)成json序列,并保存到arg0文件中。* writeValue(OutputStream arg0, Object arg1)把a(bǔ)rg1轉(zhuǎn)成json序列,并保存到arg0輸出流中。* writeValueAsBytes(Object arg0)把a(bǔ)rg0轉(zhuǎn)成json序列,并把結(jié)果輸出成字節(jié)數(shù)組。* writeValueAsString(Object arg0)把a(bǔ)rg0轉(zhuǎn)成json序列,并把結(jié)果輸出成字符串。*/ObjectMapper mapper = new ObjectMapper();// User類(lèi)轉(zhuǎn)JSONString json = mapper.writeValueAsString(person);// 輸出結(jié)果:{"name":"zhangsan","age":20}System.out.println(json);// JSON解析Person readValue = mapper.readValue(json, Person.class);// 輸出結(jié)果:Person [name=zhangsan, age=20]System.out.println(readValue);} }

(6)fastjson的使用

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.42</version> </dependency>

方法入口:?

public static final Object parse(String text); // 把JSON文本parse為JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject??? public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse為JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 將JavaBean序列化為JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化為帶格式的JSON文本 public static final Object toJSON(Object javaObject); // 將JavaBean轉(zhuǎn)換為JSONObject或者JSONArray。 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;public class FastjsonTest {/*** 創(chuàng)建JSON*/@Testpublic void test1() {// 創(chuàng)建一個(gè) Person 對(duì)象Person person = new Person();person.setName("zhangsan");person.setAge(20);// 將 Person 對(duì)象轉(zhuǎn)為 json 字符串String json = JSON.toJSONString(person);// 輸出結(jié)果:{"age":20,"name":"zhangsan"}System.out.println(json);// 將 Person 對(duì)象轉(zhuǎn)為 json 字符串, 這個(gè)字符串是經(jīng)過(guò)格式化的String format_json = JSON.toJSONString(person, true);System.out.println(format_json);}@Testpublic void test2() {String json_array = "[{\"age\":20,\"name\":\"zhangsan\"},{\"age\":22,\"name\":\"lisi\"}]";// 將 json 字符串轉(zhuǎn)為 JSONArray 對(duì)象JSONArray array = JSON.parseArray(json_array);System.out.println(array);// 將 json 字符串轉(zhuǎn)為 List 集合List<Person> list = JSON.parseArray(json_array, Person.class);for (Person person : list) {System.out.println(person);}}/*** JSON解析*/@Testpublic void test3() {String json = "{\"age\":20,\"name\":\"zhangsan\"}";// 將 json 字符串轉(zhuǎn)為 JSONObject 對(duì)象JSONObject object = JSON.parseObject(json);System.out.println(object);// 將 json 字符串轉(zhuǎn)為 Student 對(duì)象Person person = JSON.parseObject(json, Person.class);System.out.println(person);} }

?

總結(jié)

以上是生活随笔為你收集整理的几种常用的JSON解析工具的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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