用 Codable 協議實現快速 JSON 解析

2021-10-07 13:26:30 字數 934 閱讀 2303

refer:

struct

person

:codable

上面的**塊除了宣告 codable 之外,這個實體類並沒有其他**,只有幾個屬性宣告。 如果我們需要把他的例項編碼成 json 字串,可以這樣:

let person =

person

(name:

"swift"

, gender:

"male"

, age:24)

let encoder =

jsonencoder()

let data =

try! encoder.

encode

(person)

let encodedstring =

string

(data: data, encoding:

.utf8)

!print

(encodedstring)

// 輸出

就像這樣 我們就完成了對 person型資料的解碼 解析成了我們想要的json字串,就是最後輸出的字典型字串。

但是有的時候 我們不想解析此例項中的所有屬性,而如果宣告繼承了 codable 協議,這個例項中的所有屬性都會被算作編碼範圍內。

如果你只想對一部分屬性進行編譯碼,也是有辦法的,可以在你的自定義類中宣告乙個 codingkeys 列舉屬性:

struct

person

:codable

}

還是之前的 person 類,這次我們加入了 codingkeys 屬性,並且定義了兩個列舉值 name 和 age,只有在 codingkeys 中指定的屬性名才會進行編碼,如果我們再次對 person 進行編碼,得到的將會是這樣的結果:

用 Codable 協議實現快速 JSON 解析

如果你之前用過objective c的話,那麼你一定對nsjsonserialization並不陌生。它的總體步驟大致是這樣,先從data物件中解析出nsdictionary或nsarray,然後在從這裡面按照屬性名稱取出需要的值,最後再用這些值給實體物件賦值。總體來說這個操作並不輕鬆,而且比較容易...

swift中使用Codable協議實現json解析

typealias codable decodable encodable 它其實另外兩個 protocol 的集合,也就是 decodable 和 encodable。乙個用作資料解析,另乙個用作資料編碼。建立乙個實體類,只宣告幾個屬性,將它例項編碼為json字串 struct person co...

JavaScript中實現快速xml轉json

src js objtree.js script head 解析過程只需兩行 就能完成,且能正常解析包含多級childrennodes的xml,如下 var xml 1.0 encoding utf 8 var xotree new xml.objtree var jsondata xotree.p...