JSON庫很常用了,現在開源的JSON庫也有很多。但是我們仍然面臨下列問題
1)時不時的爆出這個Json庫出現漏洞,那個json庫出現漏洞。一旦出現漏洞只能升級,想切換JSON都不成。
2)一個項目中有多個JSON庫(這個原因很多,但又不可避免),改Bug可能都得學習多種JSON庫
鑒於如上問題,開發了一套easyjson庫,你可以把它看做是slf4j一樣,它本身不做JSON的處理,可用它來講任何的JSON進行適配到其他的JSON庫上。
它是基於此思路開發出來的。使用它,你的現有項目不需要做一行的代碼改變即可在各個JSON庫自如的切換。
倉庫地址:Github EasyJSON
關鍵特性:
- Supports gson, fastjson, jackson, Progsbase ...
- Supports tree model, stream model
- Control whether serialize null
- Convert ON|OFF, 1|0 to Boolean
- Serialize or deserialize a Enum based on custom field
- Serialize or deserialize a Date using specified pattern | date format
- Supports custom exclusion rule, for examples: @Ignore, transient, specified modifier ...
- Get the JSONBuilder with zero configuration
- Switch the underlying implement without any code change
- Supports JDK 1.6+
目前支持將JSON庫適配給fastjson, gson, jackason
easyjson facade | JSON Implementation |
---|---|
<dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>easyjson-core</artifactId> <version>${version}/version> </dependency> |
<dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>easyjson-gson</artifactId> <version>${version}/version> </dependency> <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>easyjson-jackson</artifactId> <version>${version}/version> </dependency> <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>easyjson-fastjson</artifactId> <version>${version}/version> </dependency> |
同時也支持將這些JSON通過easyjson 適配:
JSON Library | Maven | version | Adapter |
---|---|---|---|
Android json | <dependency> <groupId>com.vaadin.external.google</groupId> <artifactId>android-json</artifactId> <version>0.0.20131108.vaadin1</version> </dependency> |
0.0.20131108.vaadin | <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>android-to-easyjson</artifactId> <version>${version}</version> </dependency> |
fastjson | <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency> |
1.2.58 | <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>fastjson-to-easyjson</artifactId> <version>${version}</version> </dependency> |
json-lib | <dependency> <groupId>com.hynnet</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> </dependency> |
2.4 | <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>jsonlib-to-easyjson</artifactId> <version>${version}</version> </dependency> |
json-smart | <dependency> <groupId>net.minidev</groupId> <artifactId>json-smart</artifactId> <version>2.3</version> </dependency> |
2.3 | <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>jsonsmart-to-easyjson</artifactId> <version>${version}</version> </dependency> |
Eclipse minimal-json | <dependency> <groupId>com.eclipsesource.minimal-json</groupId> <artifactId>minimal-json</artifactId> <version>0.9.5</version> </dependency> |
0.9.5 | <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>minimaljson-to-easyjson</artifactId> <version>${version}</version> </dependency> |
org.json | <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20180813</version> </dependency> |
20180813 | <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>orgjson-to-easyjson</artifactId> <version>${version}</version> </dependency> |
Progsbase JSON | <dependency> <groupId>com.progsbase.libraries</groupId> <artifactId>JSON</artifactId> <version>0.3.9</version> </dependency> |
0.3.9 | <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>progsbase-to-easyjson</artifactId> <version>${version}</version> </dependency> |
json-simple | <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency> |
1.1.1 | <dependency> <groupId>com.github.fangjinuo.easyjson</groupId> <artifactId>simplejson-to-easyjson</artifactId> <version>${version}</version> </dependency> |