swift4 带来了原生的json解析,它们分别是 JSONDecoder和JSONEncoder,使用起来还算方便,不过为了更方便,我把它们又进行了简单的封装:

class JsonHelper {
static func ToJson<T:Codable>(_ obj:T) -> String {
let encoder=JSONEncoder();
let data=try! encoder.encode(obj)
let str=String(data:data,encoding:.utf8)!
return str
}
static func ToObject<T:Codable>(_ data:String) -> T{
let decoder=JSONDecoder();
let obj=try! decoder.decode(T.self, from: data.data(using: .utf8)!)
return obj;
}
}

我把它们封装成了泛型方法,这样用起来就相当方便了,提示下,要实现json序列化和反序列化,你必须在你的实体类继承Codable,如下:

class Boy:Codable {
init() {
self.Name="XiaoMing"
self.Age=
self.Sex=true
}
init(name:String,age:Int,sex:Bool) {
self.Name=name
self.Age=age
self.Sex=sex
}
func ToString() -> String {
return JsonHelper.ToJson(self)
} var Name:String!
var Age:Int!
var Sex:Bool!
}

调用也很简单:

var boy=Boy()
var str=JsonHelper.ToJson(boy)
var b:Boy=JsonHelper.ToObject(str)
var name=(JsonHelper.ToObject(str) as Boy).Name

顺便吐槽下swift的泛型居然不能用JsonHelper.ToObject<Boy>(str) 这样的方式!

 

再加一个String类型的下标取字符

extension String {
subscript(index:Int) -> Character{
get{
return self[self.index(self.startIndex,offsetBy:index)]
}
}
}

写了这个扩展你就可以 str[index] 取字符了

Swift4 Json的更多相关文章

  1. 【WIP】Swift4 异常处理, JSON处理

    创建: 2018/03/24 更新: 2018/06/05 补充catch可以只带where不带模式 [任务表]TODO 异常处理语法  异常的发生 抛出例外 thorw 式 ● 抛出的值的类型必须采 ...

  2. Codable实现json转Model,是时候干掉HandyJSON了!

    自从开始使用Swift做项目,一直都在使用HandyJSON,不可否认,HandyJSON在Swift4.0是个好东西,也尝试过其它json转mode的工具,最终发现还是HandyJSON最好用. 去 ...

  3. swift4.0 数据转模型

    swift 4.0时代的到来,说明了swift已经趋于稳定了,已经完全可以入坑了. 下面就拿最简单的数据转模型来说说,实战一下. 接口使用:  http://116.211.167.106/api/l ...

  4. ios swift4之kvo的使用

    在swift4之前,使用kvo只需要继承NSObject 就可以了.但是swift4之后发生了变化,必须在class之前加入@objcMembers修饰,不然就没有效果了. 下面举个例子:如定义一个P ...

  5. ios json转model的简单现实

    在android开发中,可用第三方的转换库如gson等.当然在ios也有一些库如MJExtensiond等.在这里,我简单实现一下. 一.先建一个model并且继承NSObject,代码如下: cla ...

  6. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  7. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  8. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  9. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

随机推荐

  1. 第二章完结,包含exam练习

    正则方程(Normal Equation) 梯度下降是最小化代价函数\(J(\theta)\)的一种方式,这里提出了另一种方式即正则方式不使用迭代方式:\(\theta = (X^TX)^{-1}X^ ...

  2. XCOM2中敌对生物设计分析(ADVENT篇)

    最近,在制作游戏Demo--DroneAssmble的过程中,对于敌对生物的设计,参考了幽浮系列的相关设定,因此着手对幽浮2中的主要敌人进行分析. 我们知道, XCOM2中的敌对生物主要由" ...

  3. Spring Boot1.5.4 连接池 和 事务

    原文:https://github.com/x113773/testall/issues/10 默认连接池---spring Boot中默认支持的连接池有Tomcat.HikariCP .DBCP . ...

  4. 【Android Developers Training】 17. 停止和重启一个Activity

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  5. app 选项卡代码

    <div id="segmented" class="mui-segmented-control"> <a class="mui-c ...

  6. 【SEO】搜索引擎优化的陷阱和作弊

    一.认识SEO [理解] 站内优化是指更改网站内部结构,让网站利于蜘蛛爬取,比如网站内容: 站外优化是指发反向链接,给蜘蛛一个爬取你网站的通道. 其中,反向链接是指网页A 上有一个链接指向网页B,则网 ...

  7. OpenCV 之 图像分割 (一)

    1  基于阈值 1.1  基本原理 灰度阈值化,是最简单也是速度最快的一种图像分割方法,广泛应用在硬件图像处理领域 (例如,基于 FPGA 的实时图像处理). 假设输入图像为 f,输出图像为 g,则经 ...

  8. ReadAndWriteBinaryFile

    package JBJADV003;import java.io.FileInputStream;import java.io.DataInputStream;import java.io.EOFEx ...

  9. CCS学习(三)

    边框样式  边框线 dorder-style (top 上: bottom 下:  left 左: right 右)  样式:none | hidden | dotted | dashed | sol ...

  10. 跳跳棋(9018_1563)(BZOJ_2144)

    题目: Hzwer的跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 某一天,黄金大神和cjy用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.他们要 ...