天天看點

dart系列之:還在為編碼解碼而煩惱嗎?用dart試試

目錄

簡介

為JSON編碼和解碼

UTF-8編碼和解碼

總結

在我們日常使用的資料格式中json應該是最為通用的一個。很多時候,我們需要把一個對象轉換成為JSON的格式,也可以說需要把對象編碼為JSON。

雖然在dart中所有的字元都是以UTF-16來存儲的,但是更加通用的格式應該是UTF-8,同樣的dart也提供了對UTF-8的編碼支援。

所有的這一切,都包含在dart:convert包中。

要想使用convet包,簡單的引入即可:

首先要注意的是,雖然dart中可以用單引号或者雙引号來表示字元串,但是在json中,字元串必須是以雙引号來表示的,否則就不是一個真正的json,這點一定要注意,是以,我們需要這樣定義JSON :

而不是這樣:

如果要讓json字元串轉換成為對象,則可以使用convert包裡面的jsonDecode方法:

除了decode之外,還可以将對象encode成為Json字元串:

上面對象隻是一個簡單的對象,可以直接轉換成為JSON。如果是複雜對象怎麼辦呢?

比如對象中嵌套對象,那麼嵌入的對象是否也會被轉換成為JSON呢?

dart考慮到了這個問題,是以在jsonEncode方法中還有第二個參數,表示如何将不可直接encode的對象轉換成為可以encode的對象:

如果第二個參數被忽略了,那麼會調用對應對象的.toJson()方法。

先看下UTF-8的解碼方法:

第一個參數是傳入一個UTF-8的codeUnits數組,第二個參數表示是否替換Unicode替換字元的字元序列<code>U+FFFD</code>。 如果傳入false的話,遇到這樣的字元就會抛出FormatException。

看一個使用的例子:

相應的,可以使用encode對字元串或者其他對象進行編碼:

以上dart對json和UTF-8的支援。

本文已收錄于 http://www.flydean.com/19-dart-decode-encode/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現! 歡迎關注我的公衆号:「程式那些事」,懂技術,更懂你!