fastjson、jackson以及son-lib的使用


fastjson前言

fastJson是阿里巴巴出品的一個json序列化工具。

引入依賴

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.75</version>
</dependency>

對象創建

JSONObject object=new JSONObject();

常用方法

1:public static String toJSONString(Object object)將對象序列化json字符串;
2:public static String toJSONString(Object object, SerializerFeature... features)將對象序列化json字符串,並保留類特征,在將json字符串反序列化為對象時,序列化前必須用這個進行方法進行序列化,否則反序列化失敗;
3:public static Object parse(String text)將字符串反序列化為對象,若要反序列化為自己定義的對象,即向下強轉,則必須使用ParserConfig.getGlobalInstance().addAccept("com.example.demo.entity.")進行白名單設置
4:public static JSONObject parseObject(String text)將json字符串序列化為json對象。
5:public Object put(String key, Object value)添加鍵值對。

jackson前言

國外著名的json工具。

引入依賴

  • jackson-core,核心包,提供基於"流模式"解析的相關 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 內部實現正是通過高性能的流模式 API 的 JsonGenerator 和 JsonParser 來生成和解析 json。
  • jackson-annotations,注解包,提供標准注解功能;
  • jackson-databind ,數據綁定包, 提供基於"對象綁定" 解析的相關 API ( ObjectMapper ) 和"樹模型" 解析的相關 API (JsonNode);基於"對象綁定" 解析的 API 和"樹模型"解析的 API 依賴基於"流模式"解析的 API。
<dependency> 
  <groupId>com.fasterxml.jackson.core</groupId> 
  <artifactId>jackson-databind</artifactId> 
  <version>2.11.4</version> 
</dependency>

jackson-databind 依賴 jackson-core 和 jackson-annotations,當添加 jackson-databind 之后, jackson-core 和 jackson-annotations 也隨之添加到 Java 項目工程中。在添加相關依賴包之后,就可以使用 Jackson。

創建對象

JsonMapper mapper=new JsonMapper();

常用方法

1:public String writeValueAsString(Object value) throws JsonProcessingException 將對象序列化json字符串;
2:public <T> T readValue(String content, Class<T> valueType) 將字符串轉換為對應的對象;

readValue(String content, Class<T> valueType)方法valueType必須和傳入的content鍵完全對應,否則報錯

常用注解

1:@JsonProperty 用於屬性,把屬性的名稱序列化時轉換為另外一個名稱。示例:

  • @JsonProperty("birth_ d ate")
    private Date birthDate;

2:@JsonFormat 用於屬性或者方法,把屬性的格式序列化時轉換成指定的格式。示例:

  • @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
    public Date getBirthDate();

  • 備注
    JsonFormat注解和下面yml配置配合解決后端傳入前端時間格式問題

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
  • 前端傳入后端時間格式問題
  • @DateTimeFormat(pattern = "yyyy-MM-dd")
    public Date getBirthDate();

3:@JsonNaming(value = PropertyNamingStrategy.UpperCamelCaseStrategy.class)用於對象,將屬性首字母格式化時轉化為大寫。示例:

  • @JsonNaming(value = PropertyNamingStrategy.UpperCamelCaseStrategy.class)
    public class RefundBHRequest implements Serializable {};

json-lib前言

Json-lib 是以前 Java 常用的一個 Json 庫,最后的版本是 2.4,分別提供了 JDK 1.3 和 1.5 的支持。

引入依賴

       <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
        </dependency>

創建對象

1:JSONObject object=new JSONObject(): 創建普通的JSONObject對象;
2:JSONArray array=new JSONArray():創建數組對象

常用方法

1:JSONObject JSONObject.fromObject(student) 將Map,實體對象轉成JSONObject對象;
2:JSONArray JSONArray.fromObject(list) 將List集合轉成JsonArray數組對象;
3: public Object put(Object key, Object value)對對象進行賦值;
4: public Object remove(String key)根據key值移除key和value;

現已不推薦使用

參考

1.https://www.cnblogs.com/guanbin-529/p/11488869.html

2.https://blog.csdn.net/androidstarjack/article/details/106485213?utm_term=jsonlib不推薦使用&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-2-106485213&spm=3001.4430

Gitee地址

https://gitee.com/zhuayng/foundation-study.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM