2017-04-24 24 views
0

我有以下JSON。將沒有名稱標籤的json分配給Jastor

{ 
"ILS" : { 
"currencyAbrv" : Israel Shekel, 
"currencyDesc" : Israel, Shekel, 
"currencySymbol" : , 
"decimalPlaces" : 2 
}, 
"MTW" : { 
"currencyAbrv" : MTW, 
"currencyDesc" : MTW, 
"currencySymbol" : , 
"decimalPlaces" : 2 
}, 
"KPW" : { 
"currencyAbrv" : Korea (North) Won, 
"currencyDesc" : Korea (North), Won, 
"currencySymbol" : , 
"decimalPlaces" : 2 
} 
} 

我想將這個json賦值給swift中的以下類的數組。

class Currency: Jastor { 
var currencyAbrv  = "" 
var currencyDesc  = "" 
var currencySymbol  = "" 
var decimalPlaces  = 0 } 

但問題是json沒有名稱標籤,我們可以與類關聯。 我該怎麼做?

+1

這個JSON不是有效的JSON –

回答

0

不再維護開源項目Jastor。因此我建議您使用其他一些JSON解析庫。那裏有很多好玩的。在我看來,更優雅的人之一是ObjectMapper,特別是使用協議ImmutableMappablecaution它是在公測!)

你JSON是一個有點奇怪的格式,假設,但currency值如關鍵ILS能夠被解析如下:

import ObjectMapper 

struct Currency { 
    let name: String 
    let shortName: String 
    let symbol: String 
    let decimalPlaces: Int 
} 

extension Currency: ImmutableMappable { 
    init(map: Map) throws { 
     name = try map.value("currencyDesc") 
     shortName = try map.value("currencyAbrv") 
     symbol = try map.value("currencySymbol") 
     decimalPlaces = try map.value("decimalPlaces") 
    } 
} 

一般來說,你應該更喜歡struct超過class。蘋果正在轉向使用類,爲什麼例如String現在是一個結構,而不是類NSStringURL是一個結構,而不是NSURL類等

關注此WWDC video about value types (structs)(在Safari中打開),如果你有興趣學習更多。

+0

@ ali-murad它是怎麼回事? – Sajjon