本文将介绍Swift开发中常用的转换(JSON对象/JSON字符串/Data之间的互相转换)

#pragma mark - JSON(对象)----->JSON字符串

1、原生方法

//JSON--->data--->JSON字符串
let data = try? JSONSerialization.data(withJSONObject: json, options: [])
let jsonString = String(data: data, encoding: String.Encoding.utf8)

#pragma mark - JSON字符串----->JSON(对象)

1、原生方法

//JSON字符串-->data-->JSON对象
let jsonString = "{\"name\":\"zhangsan\",\"age\": 18}"
let jsonData = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: false) ?? Data()
guard let json = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) else {
return
}

2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

//JSON字符串-->data-->JSON对象(测试发现直接使用JSON(jsonString).arrayValue是转化不出来的)
let data = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: false) ?? Data()
let json = JSON(data).arrayValue

#pragma mark - JSON(对象)----->Data

1、原生

let data = try? JSONSerialization.data(withJSONObject: json, options: []) 

#pragma mark - Data----->JSON(对象)

1、原生方法

guard let array = try? JSONSerialization.jsonObject(with: data, options: []) as? [[String: AnyObject]] else {//转化失败就返回
return
}

2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

guard let array = JSON(data!).arrayObject as? [[String: AnyObject]] else {//转化失败就返回
return
}

#pragma mark - JSON字符串----->Data

1、原生方法

// string字符串按照String.Encoding.utf8这种编码格式转化为data
if let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false) {
//.........
}

#pragma mark - Data----->JSON字符串

1、原生方法

//只要符合String.Encoding.utf8这种编码的data都能转化成功
let string = NSString(data: data, encoding: String.Encoding.utf8.rawValue)

2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

//如果转化后的字符串不是JSON类型的字符串,则输出null(注意: 该字符串的控制台输出的格式为JSON格式输出,实际类型是字符串!!!)
//本质是先转化为JSON对象再转化为dessription!!!
let jsonString = JSON(jsonData).description

更多内容--> 博客导航 每周一篇哟!!!

有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!

Swift开发中 JSON对象/JSON字符串/Data的互转的更多相关文章

  1. js中的json对象和字符串之间的转化

    字符串转对象(strJSON代表json字符串)   var obj = eval(strJSON);   var obj = strJSON.parseJSON();   var obj = JSO ...

  2. Swift语言中如何使用JSON数据教程

    这是一篇翻译文章,原文出处:http://www.raywenderlich.com/82706/working-with-json-in-swift-tutorial Swift语言中如何使用JSO ...

  3. Json数组操作小记 及 JSON对象和字符串之间的相互转换

    [{"productid":"1","sortindex":"2"},{"productid":&q ...

  4. json对象与字符串的相互转换,数组和字符串的转换

    1.json对象转换为字符串 JSON.stringify(value [, replacer] [, space])  var student = new Object(); student.id ...

  5. JSON 对象 与 字符串 互转

    $sui = [ 'xixixi' => 'suisuisui', 'hahaha' => 'longlonglong', ]; $data = json_encode($sui); pr ...

  6. jquery转换json对象为字符串

    jquery转换json对象为字符串 JSON.stringify(jsonObject),可用于单个JSON对象,也可用于JSON数组 alert(JSON.stringify(jsonObject ...

  7. jquery的json对象与字符串之间转换

    json对象----- >>字符串 JSON.stringify(obj) json字符串------>>json对象 JSON.parse(string) 公众号 欢迎关注我 ...

  8. 第168天:json对象和字符串的相互转换

    json对象和字符串的相互转换 1.json对象和字符串的转换 在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和pa ...

  9. json对象与字符串互转方法

    字符串转json对象: var data = eval( '(' + str + ')' ); json对象转字符串: var jsonStr = JSON.stringify( obj );

随机推荐

  1. django中的ORM与 应用与补充

    目录 django中的ORM与 应用与补充 ORM与数据的对应关系 ORM 常用字段 ORM 其他字段 自定义字段 字段参数 Model Meta参数 常用13中查询(必会) 单表查询的双下划线应用 ...

  2. MyBaties源码解析

    觉得查看源代码确实是一个学习的一种方法 因为很多时候别人把最核心的代码给我们都封装好了 我们直接可以来拿使用 很多时候自己也会问 为什么通过这个方法就可以得到我觉得就是一颗好奇心吧 我算了算 就这三个 ...

  3. 微服务监控神器Prometheus的安装部署

    本文涉及:如何在k8s下搭建Prometheus+grafana的监控环境 基本概念 Prometheus提供了容器和云原生领域数据搜集.存储.处理.可视化和告警一套完整的解决方案,最初时是由Soun ...

  4. VLAN-8-VTP配置

    未配置域名的服务器不会发送任何VTP更新.  

  5. 网站前端开发--css篇

    Ⅰ 全局:global.css 全局样式为全站公用,为页面样式基础,页面中必须包含. 结构:layout.css 页面结构类型复杂,并且公用类型较多时使用.多用在首页级页面和产品类页面中. 私有:st ...

  6. python 编程基础-字典类型和方法

    定义:字典是一种key-vlaue的数据类型. 字典特性KEY值必须是唯一,且可hash的(不可变数据类型),无索引,无序的(因为有KEY),查找速度快 语法:info = {'stu1101':&q ...

  7. idea报错:Error running $classname: Command line is too long. Shorten command line for $classname.

    Command line is too long 打印的变量太长了,超过了限制,这都会报错...我只想知道idea基于什么原理会报这个错... 解决 1.按照提示修改该类的配置,选择jar manif ...

  8. Redis特性之持久化机制

    持久化机制 Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化. Redis支持两种持久化方式: 1.snapshotting(快照)也是默认方式 ...

  9. Linux的优缺点,Linux与windows的区别

    Linux 一. 什么是linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议. ...

  10. JAVA 框架之面向对象设计原则

     面向对象设计原则:  单一职责原则 SRP :   一个类或者行为只做一件事 .  降低代码冗余,提高可重用性,可维护性,可扩展性,可读性 使用组合形式   里氏替换原则 LSP :  所有引用基类 ...