JSON的一些理解

tony0087發表於2021-09-09

今天看了程式碼,發現解析json資料的時候用的是最原始的解析,好久都沒有用這種解析了,都忘的差不多了,現在做個筆記來分享一下json解析的兩種方法

(1)、原始解析方式

(2)、FastJson

一、json的概念:

json是一種輕量級的資料交換格式,伺服器傳過來的資料一般都是json資料。可以才不同平臺上進行資料交換。

json可以將物件轉成json格式的字串,也可以講json字串轉換成java。它比xml更輕量級。


二、json類:

(1)、JsonObject:

可以看作是json物件,是一對(key/value)值。例如:{"json":"hello json"},格式:最外面是大括號,裡面的key和value被冒號(:)分開。

新增:new JSONObject().put{"json":"hello json"};其中value的型別有:Boolean、JSONArray、JSONObject、Number、String、JSONObject.NULL object

(2)、JsonArray

代表一組有序的數值。例如:[name1,name2,name3],格式:用方括號包裹,數值間用逗號(,)分隔

查詢:可以用get(下標)和opt(下標)兩種方法;新增:put()方法。型別同JsonObject:

(3)、JsonStringer:

json文字構建類

(4)、JsonTokener:

json解析類

(5)、JsonException:

json中用到的異常

三、json例項:

(1)、Object例項:

"people":{"name":"zhangsan",

  "sex":"女".

  "age":"23"

},

"people":{"name":"lisi",

  "sex":"男".

  "age":"23"

}

(1)、Array例項:

[

{

"zhangsan":"100",

"lisi":"80",

"wangwu":"90",

},

{

"xiaoming":"20",

"xiaohong":"40",

"xiaohua":"30",

}

]

四、json解析

(1)、解析Object

String str={"name":"zhangsan"};

JSONObject json=new JSONObject(str);

log.i("json",json.getString("name"));

(2)、解析Array

String str={"number":[1,2,3]};

JSONObject json=new JSONObject(str);

JSONArray number=json.getJSONArray("number");

for(int i=0;i<number.length;i++){

log.i("json",number.getInt(i)+"");

}

五、FastJson是阿里巴巴工程師開發的一個json處理工具包,包括“序列化”和“反序列化”兩部分。支援Java Bean、集合、Map、日期等等

fastjson的最主要的使用入口是com.alibaba.fastjson.JSON

	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轉換為JSONObject或者JSONArray
	具體不多說,直接放案例

	核心部分:
		我用的最多的是json2object(),方法別的沒有怎麼用過

	package com.example.jsontoobject;
	import java.sql.Date;
	import java.util.ArrayList;
	import com.alibaba.fastjson.JSON;
	import com.alibaba.fastjson.serializer.SerializeConfig;
	import com.alibaba.fastjson.serializer.SerializerFeature;
	import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
	/**
 	* json轉化工具類 預設處理時間
 	*/
	public class FastJsonUtil {
		private static SerializeConfig mapping=new SerializeConfig();
	
		/**
		 * Object轉化成json
	 	*/
		public static <T> T json2object(String jsonText,Class<T> clazz){
			return (T) JSON.parseObject(jsonText, clazz);
		}
	
		public static ArrayList json2list(String jsonText,Class clazz){
			ArrayList list=new ArrayList();
			try {
				list=(ArrayList) JSON.parseArray(jsonText, clazz);
			} catch (Exception e) {
				// TODO: handle exception
			}
			return list;
		}
	
		/**
		 * Object轉化成json
		 */
		public static String object2json(Object jsonText){
			return JSON.toJSONString(jsonText, SerializerFeature.WriteDateUseDateFormat);
		}
	
		/**
	 	* Object轉化成json 自定義時間格式
	 	*/
		public static String object2json(String dateFormat, Object jsonText){
			mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));
			return JSON.toJSONString(jsonText, mapping);
		}
}

原文連結:http://www.apkbus.com/blog-495932-60789.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2815209/,如需轉載,請註明出處,否則將追究法律責任。

相關文章