JSON的一些理解
今天看了程式碼,發現解析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); } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2815209/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JSON Web Token 的理解JSONWeb
- JSON.stringify() 的深入理解JSON
- 在JSON中遇到的一些坑JSON
- 理解JSON Web Token (一)JSONWeb
- 深入理解JMeter中的JSON ExtractorJMeterJSON
- 對ThreadLocal的一些理解thread
- 對Transformer的一些理解ORM
- 對React一些原理的理解React
- React事務的一些理解React
- c++ typedef的一些理解C++
- Express原始碼的一些理解Express原始碼
- 關於position的一些理解
- 分散式鎖的一些理解分散式
- map底層的一些理解
- flutter中的rebuild一些理解FlutterRebuild
- 如何理解 package.json 中的 proxy 欄位?PackageJSON
- 深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll檔案JSON
- 理解JSON.stringify()高階用法JSON
- X-Forwarded-For的一些理解(1)Forward
- 關於position定位的一些理解
- 差分約束的一些理解
- 通俗理解一些概念
- JS Array.prototype.reduce的一些理解JS
- 對於Redux原始碼的一些理解Redux原始碼
- 關於Swift中Properties的一些理解Swift
- 關於Dart中Future的一些理解Dart
- 關於Base64的一些理解
- new static ,new self ,self::, $this的一些理解
- 理解 JSON Web Tokens (JWT) 的 5 個簡單步驟JSONWebJWT
- redux中介軟體的原始碼的一些理解Redux原始碼
- 關於服務高可用的一些理解
- 對Java多執行緒的一些理解Java執行緒
- 關於跨域和JSONP的一些理解跨域JSON
- HTTP2 的一些理解與練習HTTP
- 關於虛擬函式的一些理解函式
- 關於 Python 裝飾器的一些理解Python
- gitlab上CI/CD的一些小實踐和理解Gitlab
- 關於spring事務原始碼的一些小理解Spring原始碼