EVReflection 是一个优秀的Swift开源框架,接入方便,使用简单。
EVReflection https://github.com/evermeer/EVReflection
以User为例,下面是一些常用的使用:
User.swift
import Foundation
import EVReflection
class User: EVObject {
var id: Int = 0
var name: String = ""
var friends: [User] = []
// 自定义 key 值
override func propertyMapping() -> [(keyInObject: String?, keyInResource: String?)] {
return [(keyInObject: "id",keyInResource: "UserID"),
(keyInObject: "name",keyInResource: "UserName"),
(keyInObject: "friends",keyInResource: "Friends")
]
}
}
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// 序列化的JSON字符串
let jsonString:String = "{\"id\": 24, \"name\": \"Bob Jefferson\", \"friends\": [{\"id\": 29, \"name\": \"Jen Jackson\"}, {\"id\": 30, \"name\": \"Jen M\"}]}"
// MARK:- JSON转模型
let user = User(json:jsonString)
print("user: \(user) \n")
// MARK:- 对象转JSON
let newJsonString = user.toJsonString()
print("newJsonString: \(newJsonString) \n")
// MARK:- 模型转字典
let userDict = user.toDictionary()
//let userDict = user.toDictionary(.DefaultSerialize)
print("userDict: \(userDict) \n")
// MARK:- 字典转模型
let newUser = User(dictionary: userDict)
print("newUser: \(newUser) \n")
// MARK:- 保存
user.saveToTemp("User.dat")
//user.saveToDocuments("User.dat")
// MARK:- 读文件转模型
let savedUser = User(fileNameInTemp: "User.dat")
print("savedUser: \(savedUser) \n")
}
}
打印结果如下:
user: User = {
"UserName" : "Bob Jefferson",
"UserID" : 24,
"Friends" : [
{
"UserName" : "Jen Jackson",
"UserID" : 29,
"Friends" : [
]
},
{
"UserName" : "Jen M",
"UserID" : 30,
"Friends" : [
]
}
]
}
newJsonString: {"UserName":"Bob Jefferson","UserID":24,"Friends":[{"UserName":"Jen Jackson","UserID":29,"Friends":[]},{"UserName":"Jen M","UserID":30,"Friends":[]}]}
userDict: {
Friends = (
{
Friends = (
);
UserID = 29;
UserName = "Jen Jackson";
},
{
Friends = (
);
UserID = 30;
UserName = "Jen M";
}
);
UserID = 24;
UserName = "Bob Jefferson";
}
newUser: User = {
"UserName" : "Bob Jefferson",
"UserID" : 24,
"Friends" : [
{
"UserName" : "Jen Jackson",
"UserID" : 29,
"Friends" : [
]
},
{
"UserName" : "Jen M",
"UserID" : 30,
"Friends" : [
]
}
]
}
savedUser: User = {
"UserName" : "Bob Jefferson",
"UserID" : 24,
"Friends" : [
{
"UserName" : "Jen Jackson",
"UserID" : 29,
"Friends" : [
]
},
{
"UserName" : "Jen M",
"UserID" : 30,
"Friends" : [
]
}
]
}