登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

JSONNeverDie

[复制链接]
来自: Torr 分类: iOS精品源码 上传时间: 2016-12-20 14:22:15
Tag:JSON 自动映射 Model 编码

项目介绍:

《JSONNeverDie 使用指南》

示例

创建一个 Model:

class People: JSONNDModel {
    var name = ""
}

从字符串转换成 JSON 再自动映射为 Model:

let data = "{\"name\": \"JohnLui\"}".dataUsingEncoding(NSUTF8StringEncoding)
let json = JSONND.initWithData(data!)
let people = People(JSONNDObject: json)
print(people.name) // get "JohnLui"

功能

自动映射

  • [x] JSON 到 Model 自动映射

  • [x] 无需 init()

  • [x] 支持多层映射

自动映射文档.

JSON 编码 / 解码

  • [x] 支持所有数据类型: Int, Double, Bool, String, Array

  • [x] 用户体验良好:Xcode 会自动提示所有可选类型

  • [x] 同时支持普通类型(Int)和可选类型(Int?)

测试覆盖率接近 100%。

环境要求

  • iOS 7.0+

  • Xcode 7

用法

引入

import JSONNeverDie

基础用法

从网路获得字符串,转化为 JSON:

let data = NSData(contentsOfURL: NSURL(string: "http://httpbin.org/get?hello=world")!)!
let json = JSONND.initWithData(data)
print(json["args"]["hello"].stringValue)

创建一个自动映射 Model

// 从 NSData 初始化
let data = NSData(contentsOfURL: NSURL(string: "http://httpbin.org/get?hello=world")!)!
let json = JSONND.initWithData(data)

// 从 Array 初始化
let arrayJSON = JSONND(array: ["hello", "world", 100])

// 从 Dictionary 初始化
let dictionaryJSON = JSONND(dictionary: ["hello": "world", "hey": "guys"])

获取值

let value = json["key"].int
let value = json["key"].intValue
let value = json["key"].string
let value = json["key"].stringValue
let value = json["key"].double
let value = json["key"].doubleValue
let value = json["key"].bool
let value = json["key"].boolValue
let value = json["key"].array
let value = json["key"].arrayValue

// 多层直接获取
let value = json["key"]["key1"]["key2"].int

处理 JSON 数组

if let jsonArray = json["array"].array {
    for jsonItem in jsonArray {
        let value = jsonItem["key"].int
    }
}

// 或者可以做的更简单
let value = json["array"].arrayValue[0]["key"].int

Xcode 可以自动提示所有可选类型

pic

从 JSONND 对象得到 JSON 字符串

let string = json.RAW

自定义 mapping

class Good : JSONNDModel {
    var des = ""
    required init(JSONNDObject json: JSONND) {
        super.init(JSONNDObject: json)
        self.des = json["description"].stringValue
    }
}

自动映射文档

继承自 JSONNDModel 的类的每一个成员变量都需要初始化。

class People: JSONNDModel {
    var name = ""
    var number = 0
    var array = [Int]()
}

多层影射需要在上层的 init() 方法中初始化下层类:

class TestModel: JSONNDModel {
    var string = ""
    var double = 0.0
    var int = 0
    var array_values = [Int]()
    var array = [ModelOnlyOneKey]()
    var hey: Hey!
    required init(JSONNDObject json: JSONND) {
        super.init(JSONNDObject: json)
        
        for i in json["array_values"].arrayValue {
            self.array_values.append(i.intValue)
        }
        for i in json["array"].arrayValue {
            self.array.append(ModelOnlyOneKey(JSONNDObject: i))
        }
        self.hey = Hey(JSONNDObject: json["hey"])
    }
}
class ModelOnlyOneKey: JSONNDModel {
    var key = 0
}
class Hey: JSONNDModel {
    var man: Man!
    required init(JSONNDObject json: JSONND) {
        super.init(JSONNDObject: json)
        
        self.man = Man(JSONNDObject: json["man"])
    }
}
class Man: JSONNDModel {
    var hello = false
}

code4app

相关源码推荐:

我来说两句
*滑动验证:
所有评论(5)
BlueManlove 2016-12-20 14:27:15
膜拜大神~
回复
littleRed 2016-12-20 14:27:22
虽不明,但觉厉...
回复
phoiu 2016-12-20 14:27:34
我是来学习的
回复
kengsir 2016-12-20 14:27:51
内容很好,棒棒哒
回复
AlonMessi 2016-12-20 14:29:03
我是来学习的
回复
hellokenken 2016-12-20 14:29:15
写的真的很不错
回复
code4app热心网友 2016-12-28 13:45:29
精华内容,楼主V5!
回复
提取码:  下载次数:1 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
604 0 1
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表