Json作為一種輕量級的交換數據形式,由於其自身的一些優良特性比如包含有效信息多,易於閱讀和解析。
使用Json的場景也很多,比如讀取解析系列化的Json格式的數據,我們需要將一個Json的字符串解析成我們想要的對象或者提取我們需要的信息。
一些工具庫比如fastjson或者gons轉換為我們想要的對象。
比如,解析一個Person對象。
Step 1. 這時候我們需要聲明一個與此Json能夠映射的對象
Step 2. 解析json數據
Step 3. 用解析后的對象做后續的業務處理
但是,有時候我們根本用不上這個對象,只想提取出需要的信息,比如插入到數據庫,或者提取出一個字段作為一個判定標識。這時候,我們可以通過如下介紹的方式來實現即可,不需要通過新建對象的方式。
通過FastJson實現
FastJson是阿里巴巴發布的一個Json處理工具包,其特點就是解析快,效率高,而且支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省等。
可以借助FastJson我們如何提取出我們想要的信息
通過靜態方法parse,將字符串解析為一個Object對象
將返回的jsonObj強轉為一個Map集合
在map集合中獲取需要的信息,比如提取出field1對應的value1
解析出來的Object對象其實就是一個map集合,這里的filed1就是map中的key,value1就是map集合中的value
對於像fieldContext本身就是一個嵌套的map集合,我們可以從fieldContext的值中再解析拆為map集合
顯然,我們成功的獲取到了想要提取的字段信息,同時也沒有新建與json對應的對象。
通過Gson實現
GSON是Google開發的Java API,主要用途為序列化Java對象為JSON字符串,或反序列化JSON字符串成Java對象。
相比較於FastJson,在實現我們前面提到的提取信息的實現細節上會有一些不同。
創建一個Gson對象
調用Gson的fromJson方法將字符串直接解析成HashMap類型,這一點要比FastJson來的更加快捷
后面的用法與使用FastJson解析數據一致,也是從Map中提取對應字段的值
最終得到的結果如下
以上主要是針對如何快速從Json字符串中提取需要信息的場景給出的解決思路,分別就當前流行的FastJson和Gson給出示例代碼,后面有機會再詳細說說有關解析Json的具體實例和細節。