Swift开发中 JSON对象/JSON字符串/Data的互转

摘要:
本文将介绍常见的转换#pragmark JSON(object)------˃JSON string 1,原生方法//JSON------˃data------˃JSON string letdata=try?JSON序列化。data#pragmark数据------˃JSON(对象)1.本机方法guardletarray=try?[[String:AnyObject]]else{//如果转换失败,返回}2。三方框架guardletarray=JSON(data![[String:AnyObject]]else}//如果转化失败,返回}#pragmark JSON字符串-----˃Data1.本机方法//字符串字符串转换为dataifletdata=String.data{//……}根据String的编码格式。编码。utf8#Pragmamark数据------˃JSON string 1.原生方法。//只要编码数据符合string。编码。utf8,可以成功转换。letstring=NSString2.三方框架。//如果转换的字符串不是JSON类型的字符串,则输出null(注意:此字符串的控制台输出格式为JSON格式,实际类型为string!!!有关iOS开发的任何问题!

本文将介绍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的互转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sqlserver2016安装js 浏览器窗口 刷新、关闭事件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Asp.net 面向接口可扩展框架之数据处理模块及EntityFramework扩展和Dapper扩展(含干货)

接口数据处理模块是什么意思呢?实际上很简单,就是使用面向接口的思想和方式来做数据处理。 还提到EntityFramework和Dapper,EntityFramework和Dapper是.net环境下推崇最高的两种ORM工具。 1、EntityFramework是出自微软根正苗红的.net下的ORM工具,直接在Vs工具和Mvc框架中集成了,默认生成的项目就...

DbContext的使用

EF4.1包括Code First和DbContext API。DbContext API为EF提供更多的工作方式:Code First,Database First和Model First。 使用DbContext构造函数 1. Code First约定连接 namespace Magic.Unicorn{    public class Unicorn...

基础篇:JAVA.Stream函数,优雅的数据流操作

前言 平时操作集合数据,我们一般都是for或者iterator去遍历,不是很好看。java提供了Stream的概念,它可以让我们把集合数据当做一个个元素在处理,并且提供多线程模式 流的创建 流的各种数据操作 流的终止操作 流的聚合处理 并发流和CompletableFuture的配合使用 关注公众号,一起交流,微信搜一搜: 潜行前行 1 stream的...

干掉mapper.xml!MyBatis新特性动态SQL真香!

干掉mapper.xml!MyBatis新特性动态SQL真香! 当我们使用MyBatis的时候,需要在mapper.xml中书写大量的SQL语句。当我们使用MyBatis Generator(MBG)作为代码生成器时,也会生成大量的mapper.xml文件。其实从MBG 1.3.6版本以后,MyBatis官方已经推荐使用Dynamic SQL,使用这一新特...

delphi 怎么将一个文件流转换成字符串(String到流,String到文件,相互转化)

//from http://kingron.myetang.com/zsfunc0d.htm (*// 标题:充分利用pascal字符串类型 说明:和PChar不同,string可以保存#0字符在其中;示例文件、内存流字符串之间转换 设计:Zswang 日期:2002-01-25 支持:wjhu111@21cn.com //*) ///////Begin...

Ext Js简单Grid创建使用及AJAX处理

在使用Ext Js对于Grid组件使用必不可少的,对于它的掌握也是需要的。简单贴一些代码,看看Grid的创建使用,就不细讲每一步了,代码注释还可以,不明白的可以在评论中写一下,或发邮件给我,一定帮助解答,欢迎交流。1.简单Ext JsGrid的创建使用(创建Ext.grid.GridPanel需要store(proxy\reader)\colModel)...