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...