JSON データ (シリアル化データと逆シリアル化データ) を生成および解析する Java の fastjson の詳細な紹介

黄舟
リリース: 2017-03-09 10:04:50
オリジナル
1937 人が閲覧しました

この記事では主に Java での JSON データ (シリアル化および逆シリアル化データ) の生成と解析について紹介します。興味のある方は参考にしてください。

この記事では 2 つのポイントについて説明します:

1. fastjson は json データを生成および解析します

(例: JavaBean、List、List、List

2. Android プログラムを通じて fastjson の使用法をテストします。

fastjson の紹介:

Fastjson は、Java 言語で書かれた高性能で完全な JSON ライブラリです。 fastjson は独自のアルゴリズムを使用して解析速度を極限まで高め、かつて最速と言われた jackson を含むすべての json ライブラリを上回ります。また、Google のバイナリ プロトコルのプロトコル バッファーも上回ります。 Fastjson は http://www.php.cn/ の標準を完全にサポートしており、公式 Web サイトに含まれるリファレンス実装の 1 つでもあります。さまざまな種類の JDK をサポートします。基本的な型、JavaBean、コレクション、マップ、列挙型、ジェネリックなどが含まれます。 JDK 5、JDK 6、Android、Alibaba Cloud 携帯電話およびその他の環境をサポートします。

1. fastjson は json 文字列 (JavaBean,List,List,List) を生成します

String jsonStrng = JSON.toJSONString(object);
ログイン後にコピー

2. J 息子のキャラクター文字列には 4 種類があります

1. JavaBean

2. リスト<文字列>

3.

4. リストMap< ;String,Object>>

コードをコピー

コードは次のとおりです:

Person person = JSON.parseObject(jsonString, Person.class);
ログイン後にコピー

(注: ここで、fastjson リフレクション メカニズムが gson よりも正確であることがわかります。id = 1001 は依然として id = 1001 です。 fastjson リフレクションと gson を介して JSONObject が {"JACKIE_ZHANG":"Jacky Cheung","ANDY_LAU" として定義されている場合、リフレクション結果は id =1001.0、

JSON パーサー fastjson (Alibaba バージョン 1.1.26 によって作成) です。 ":"Andy Lau","LIMING" :"Dawn","Aaron_Kwok":"Aaron Kwok"} の場合、値を読み取るときに KEY の順序が狂います。テスト コード:

List<Person> listPerson =JSON.parseArray(jsonString, Person.class);
ログイン後にコピー


実行中結果:

List<String> listString = JSON.parseArray(jsonString, String.class);
ログイン後にコピー

解決策: JSONArray として定義され、コードは次のとおりです:

List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
ログイン後にコピー

実行結果は次のとおりです:

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();//用来换行 
  } 
 } 
}
ログイン後にコピー

ではなく JSONObject として定義したい場合JSONArray、他の JSON パーサーを選択することもできます。個人的には Google の gson、ドキュメントを使用することをお勧めします。明らかに fastjson よりも優れています (ここから Alibaba と Google の間のギャップがわかります):

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-郭富城
ログイン後にコピー

実行結果:

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();//用来换行 
  } 
 } 
}
ログイン後にコピー

以上がJSON データ (シリアル化データと逆シリアル化データ) を生成および解析する Java の fastjson の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート