以前はJson-libライブラリによってピットインされており、解析が遅すぎました。FastJsonライブラリに切り替えた後、パフォーマンスは質的に飛躍しました。これを使用して、さまざまなjsonライブラリを整理します
1つ、Json-libライブラリ
最も古く、最も広く使用されているが、パフォーマンスが最も悪いjsonライブラリ。お勧めしません!
依存関係を追加します。
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
指示:
- Javaオブジェクト(リスト、マップを含む)をjson文字列に変換します: String jsonStr = JSONObject.fromObject(bean).toString()
- json文字列をJavaオブジェクトに変換します: Bean bean =(Bean)JSONObject.toBean(JSONObject.fromObject(jsonStr)、Bean.class)
2、Gsonライブラリ
Googleが作成した最も完全なjsonパーサー
依存する必要があります:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
指示:
- Javaオブジェクト(リスト、マップを含む)をjson文字列に変換します。StringjsonStr= new Gson()。toJson(bean);
- json文字列をJavaオブジェクトに変換します: Bean bean = new Gson()。fromJson(jsonStr、Bean.class)
- json文字列変換リスト対象: List <Bean> beanList = new Gson()。fromJson(jsonStr、new TypeToken <List <Bean >>(){}。getType());
- json字符串変換マップ対象: Map <String、String> map = new Gson()。fromJson(str、new TypeToken <HashMap <String、String >>(){}。getType());
3、Jacksonライブラリ(springbootプロジェクトは直接使用でき、パッケージを引用する必要はありません)
最も人気のあるjsonライブラリ。springMVCのデフォルトのjsonライブラリはjacksonです。
依存する必要があります:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.1</version>
</dependency>
指示:
- Javaオブジェクト(リスト、マップを含む)をjson文字列に変換します。StringjsonStr= new ObjectMapper()。writeValueAsString(bean);
- json文字列をJavaオブジェクトに変換します: Bean bean = new ObjectMapper()。readValue(jsonStr、Bean.class)
- オブジェクトを一覧表示するjson文字列: List <Bean> beanList = new ObjectMapper()。readValue(jsonStr、new TypeReference <ArrayList <Bean >>(){}); // TypeReference匿名内部クラス、オブジェクトタイプを示します
- json字符串変換マップ対象: Map <String、String> map = new ObjectMapper()。readValue(jsonStr、new TypeReference <HashMap <String、String >>(){});
4、FastJsonライブラリ(推奨)
Aliによって作成されたjsonライブラリは、非常に高速な解析速度を備えています。ただし、脆弱性は公開されています。最新バージョンを使用してください。
依存関係を追加します。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
指示:
- Javaオブジェクト(リスト、マップを含む)をjson文字列に変換します。StringjsonStr= JSON.toJSONString(bean);
- json文字列をJavaオブジェクトに変換します: Bean bean = JSONObject.parseObject(jsonStr、Bean.class)
- json文字列をリストオブジェクトに変換します。List<Bean> beanList = JSONObject.parseArray(jsonStr、Bean.class);
- json文字列をマップオブジェクトに変換します: Map <String、String> map = JSONObject.parse(jsonStr);
5、jsonライブラリの比較
書く時間がないので、ネットマップを借りて各jsonライブラリのパフォーマンスを比較します
シリアル化のパフォーマンスは次のとおりです。
デシリアライズのパフォーマンスは次のとおりです。
要約すれば:
データ量が少ない場合:Gsonは高速です
データ量が多い場合:FastJsonは高速です
データ量に関係なく:ジャクソンが最も安定しています
ランキング:
FastJson> Jackson> Gson> Json-lib
時間があるときにもう一度テストしてください