SwiftサードパーティJSON転模型対象利器
3956 ワード
最新の神器JSONExport
Swift漢化版JSONExport
swiftモデルファイルを自動的に生成すると、任意のJSON文字列でSwift対応モデル(クラス、構造体、Core Dataクラス、Realmクラス、SwiftlyJSONクラス)を生成し、ヘルプメソッド(インスタンスをNSDictionaryに戻す)を生成できます.
JSONUtilities -
GitHubアドレス:https://github.com/lucianomarisi/JSONUtilities
D3Json -
GitHubアドレス:https://github.com/mozhenhau/D3Json
JSONU tilities使用
①直接json復号
例えば、個人情報のJSONデータ
②構造体又はクラスに復号する
③ネストされた構造体またはクラスを復号するには復号可能なプロトコルに従う必要がある
例:社員情報のJSON対象
--
D 3 Json使用
①jsonデータ転送モデル
②jsonデータをArrayクラスに変換
Swift漢化版JSONExport
swiftモデルファイルを自動的に生成すると、任意のJSON文字列でSwift対応モデル(クラス、構造体、Core Dataクラス、Realmクラス、SwiftlyJSONクラス)を生成し、ヘルプメソッド(インスタンスをNSDictionaryに戻す)を生成できます.
JSONUtilities -
JSON
GitHubアドレス:https://github.com/lucianomarisi/JSONUtilities
D3Json -
swift , json model
GitHubアドレス:https://github.com/mozhenhau/D3Json
JSONU tilities使用
①直接json復号
例えば、個人情報のJSONデータ
{
"name" : "John Doe",
"age" : 24,
"weight" : 72.4
}
let jsonDictionary = try JSONDictionary.fromFile("person") // json
let name: String = try jsonDictionary.jsonKey("name")
let age: Int = try jsonDictionary.jsonKey("age")
let weight: Int = try jsonDictionary.jsonKey("weight")
let profession: String? = jsonDictionary.jsonKey("profession") //
②構造体又はクラスに復号する
struct Person {
let name : String
let age : Int
let weight : Double
let profession : String?
init(jsonDictionary: JSONDictionary) throws {
name = try jsonDictionary.jsonKey("name")
age = try jsonDictionary.jsonKey("age")
weight = try jsonDictionary.jsonKey("weight")
profession = jsonDictionary.jsonKey("profession")
}
}
class Person {
let name : String
let age : Int
let weight : Double
let profession : String?
init(name: String,
age: Int,
weight: Double
profession: String?) {
self.name = name
self.age = age
self.weight = weight
self.profession = profession
}
// , Swift throw
convenience init(jsonDictionary: JSONDictionary) throws {
self.init(
name : try jsonDictionary.jsonKey("name"),
age : try jsonDictionary.jsonKey("age"),
weight : try jsonDictionary.jsonKey("weight"),
profession : try jsonDictionary.jsonKey("profession")
)
}
}
③ネストされた構造体またはクラスを復号するには復号可能なプロトコルに従う必要がある
例:社員情報のJSON対象
{
"name" : "Working name LTD.",
"employees": [
{
"name": "John Doe",
"age": 24,
"weight": 72.4
},
{
"name": "Jane Doe",
"age": 22,
"weight": 70.1
}
]
}
struct Company {
let name: String
let employees: [Person]
init(jsonDictionary: JSONDictionary) throws {
name = try jsonDictionary.jsonKey("name")
employees = try jsonDictionary.jsonKey("employees")
}
}
//
struct Person:Decodable {
let name : String
let age : Int
let weight : Double
let profession : String?
init(jsonDictionary: JSONDictionary) throws {
name = try jsonDictionary.jsonKey("name")
age = try jsonDictionary.jsonKey("age")
weight = try jsonDictionary.jsonKey("weight")
profession = jsonDictionary.jsonKey("profession")
}
}
--
D 3 Json使用
①jsonデータ転送モデル
var user:User = User.jsonToModel(json) // json User
②jsonデータをArrayクラスに変換
var users = User.jsonToModelList(jsonArr) as! Array