一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java中fastjson生成和解析json數據(序列化和反序列化數據)

java中fastjson生成和解析json數據(序列化和反序列化數據)

2020-08-05 11:27PointNet Java教程

本篇文章主要介紹了java中fastjson生成和解析json數據(序列化和反序列化數據),具有一定的參考價值,感興趣的小伙伴們可以參考一下。

本文講解2點

1. fastjson生成和解析json數據

(舉例:4種常用類型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

2.通過一個android程序測試fastjson的用法。

fastjson簡介:

Fastjson是一個Java語言編寫的高性能功能完善的JSON庫。fastjson采用獨創的算法,將parse的速度提升到極致,超過所有json庫,包括曾經號稱最快的jackson。并且還超越了google的二進制協議protocol buf。Fastjson完全支持http://json.org的標準,也是官方網站收錄的參考實現之一。支持各種JDK類型。包括基本類型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手機等環境。

一. fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>)

java" id="highlighter_723923">
?
1
String jsonStrng = JSON.toJSONString(object);

二. fastjson 解析json字符串為四種類型

1. JavaBean

?
1
Person person = JSON.parseObject(jsonString, Person.class);

2. List<JavaBean>

?
1
List<Person> listPerson =JSON.parseArray(jsonString, Person.class);

3. List<String>

?
1
List<String> listString = JSON.parseArray(jsonString, String.class);

4. List<Map<String,Object>>

 

復制代碼 代碼如下:

List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){}); 

 

(注意:此處可看出fastjson反射機制比gson更準確, id = 1001 通過fastjson反射仍是 id = 1001 , 而通過gson反射結果 為 id =1001.0 , 

JSON解析器fastjson(阿里巴巴出品,版本1.1.26),如果定義了JSONObject為{"JACKIE_ZHANG":"張學友","ANDY_LAU":"劉德華","LIMING":"黎明","Aaron_Kwok":"郭富城"},那么讀取值時,KEY順序無序,測試代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import comalibabafastjsonJSONObject;
/**
 * Created by wangzhenfei on 14-4-
 */
public class FastJsonTest {
 public static void main(String[] args){
  String jsonStr = "{\"JACKIE_ZHANG\":\"張學友\",\"ANDY_LAU\":\"劉德華\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ;
 
 
  //做5次測試
  for(int i=0,j=5;i<j;i++)
  {
   JSONObject jsonObject = JSONObjectparseObject(jsonStr) ;
   for(javautilMapEntry<String,Object> entry:jsonObjectentrySet()){
    Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t");
   }
   Systemoutprintln();//用來換行
  }
 }
}

運行結果:

?
1
2
3
4
5
LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-張學友ANDY_LAU-劉德華
Aaron_Kwok-郭富城 ANDY_LAU-劉德華LIMING-黎明JACKIE_ZHANG-張學友
Aaron_Kwok-郭富城 JACKIE_ZHANG-張學友ANDY_LAU-劉德華LIMING-黎明
LIMING-黎明 ANDY_LAU-劉德華JACKIE_ZHANG-張學友Aaron_Kwok-郭富城
JACKIE_ZHANG-張學友 LIMING-黎明ANDY_LAU-劉德華Aaron_Kwok-郭富城

解決辦法:定義為JSONArray,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import comalibabafastjsonJSONArray;
 
/**
 * Created by wangzhenfei on 14-4-
 */
public class FastJsonTest {
 public static void main(String[] args){
  String jsonStr = "[{\"JACKIE_ZHANG\":\"張學友\"},{\"ANDY_LAU\":\"劉德華\"},{\"LIMING\":\"黎明\"},{\"Aaron_Kwok\":\"郭富城\"}]" ;
  //做5次測試
  for(int i=0,j=5;i<j;i++)
  {
   JSONArray jsonArray = JSONArrayparseArray(jsonStr);
 
   for(int k=0;k<jsonArraysize();k++){
    Systemoutprint(jsonArrayget(k) + "\t");
   }
   Systemoutprintln();//用來換行
  }
 }
}

運行結果為:

?
1
2
3
4
5
{"JACKIE_ZHANG":"張學友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
{"JACKIE_ZHANG":"張學友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
{"JACKIE_ZHANG":"張學友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
{"JACKIE_ZHANG":"張學友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
{"JACKIE_ZHANG":"張學友"} {"ANDY_LAU":"劉德華"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}

如果就想要定義為JSONObject,而不是JSONArray,可以選用其他JSON解析器,個人推薦使用google的gson,文檔明顯比fastjson好很多(從這里可以看出阿里巴巴和谷歌的差距):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import comgooglegsonJsonElement;
import comgooglegsonJsonObject;
import comgooglegsonJsonParser;
 
/**
 * Created by wangzhenfei on 14-4-
 */
public class FastJsonTest {
 public static void main(String[] args){
  String jsonStr = "{\"JACKIE_ZHANG\":\"張學友\",\"ANDY_LAU\":\"劉德華\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ;
  //做5次測試
  for(int i=0,j=5;i<j;i++)
  {
   JsonObject jsonObject = (JsonObject) new JsonParser()parse(jsonStr);
   for(javautilMapEntry<String,JsonElement> entry:jsonObjectentrySet()){
    Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t");
   }
   Systemoutprintln();//用來換行
  }
 }
}

運行結果:

?
1
2
3
4
5
JACKIE_ZHANG-"張學友" ANDY_LAU-"劉德華" LIMING-"黎明" Aaron_Kwok-"郭富城"
JACKIE_ZHANG-"張學友" ANDY_LAU-"劉德華" LIMING-"黎明" Aaron_Kwok-"郭富城"
JACKIE_ZHANG-"張學友" ANDY_LAU-"劉德華" LIMING-"黎明" Aaron_Kwok-"郭富城"
JACKIE_ZHANG-"張學友" ANDY_LAU-"劉德華" LIMING-"黎明" Aaron_Kwok-"郭富城"
JACKIE_ZHANG-"張學友" ANDY_LAU-"劉德華" LIMING-"黎明" Aaron_Kwok-"郭富城"

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/goody9807/p/4244862.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 倩女还魂在线观看完整版免费 | 美女翘臀内疯狂进出 | ipx358cn出差被男上司在线 | 国产精品久久久久久久人人看 | 精品网站 | 国产男女爱视频在线观看 | 182免费在线观看 | 日韩在线视频免费不卡一区 | 亚洲欧美一区二区久久 | 亚洲精品一线二线三线 | 国产精自产拍久久久久久 | 俺去也亚洲色图 | 欧洲网色偷偷亚洲男人的天堂 | 亚洲天堂影院在线观看 | 免费精品国产在线观看 | 国产欧美日韩免费一区二区 | 午夜综合网 | 视频在线播放 | 国产精品秒播无毒不卡 | 国产精品俺来也在线观看了 | 国产精品四虎在线观看免费 | 奇米影视久久 | 欧美一区二区三区在线观看免费 | 99视频精品免费99在线 | 亚洲性久久久影院 | 亚洲精品视频免费在线观看 | 国产精品福利在线观看秒播 | 紧身裙女教师miad711在线 | 邪恶肉肉全彩色无遮琉璃神社 | 1769亚洲资源站365在线 | 日本无遮挡亲吻膜下面免费 | 男人狂躁女人gif动态图 | 久久99精品涩AV毛片观看 | 日韩欧美国内 | 999热在线精品观看全部 | 欧美在线视频7777kkkk | 任我鲁精品视频精品 | 99re免费在线视频 | hezyo加勒比一区二区三区 | 国产麻豆剧果冻传媒影视4934 | 亚洲高清一区二区三区四区 |