谈谈iOS开发之JSON格式数据的生成与解析

iOS开发中的JSON数据

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在iOS开发中常用于前后端交互、接口请求等方面。在iOS开发中,我们可以使用系统提供的NSJSONSerialization类实现对JSON格式数据的生成和解析。

JSON数据的生成

我们可以使用Foundation框架中的NSJSONSerialization类生成JSON格式数据。生成JSON格式数据的方法是将需要序列化(序列化即将内容组成一个串作为输出)的OC对象序列化为NSData对象。

具体实现如下:

NSError *error = nil;
NSDictionary *dict = @{@"name": @"Tom", @"age": @18, @"city": @"Beijing"};
NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

以上代码将一个NSDictionary对象序列化成了一个JSON格式的NSData对象,并将NSData对象转成了NSString对象,最终得到了一个JSON格式的字符串。其中,NSDictionary对象表示生成JSON格式数据的源数据,options参数用于设置生成JSON格式数据时的选项,error参数用于存储序列化错误时的信息。

JSON数据的解析

我们可以使用Foundation框架中的NSJSONSerialization类解析JSON格式数据。解析JSON格式数据的方法是将JSON格式数据转化为OC对象。

具体实现如下:

NSError *error = nil;
NSString *jsonString = @"{\"name\":\"Tom\",\"age\":18,\"city\":\"Beijing\"}";
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
id object = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
if ([object isKindOfClass:[NSDictionary class]]) {
    NSDictionary *resultDic = (NSDictionary *)object;
    NSLog(@"name:%@\n age:%@\n city:%@", resultDic[@"name"], resultDic[@"age"], resultDic[@"city"]);
}

以上代码将一个JSON格式的字符串解析成了一个NSDictionary对象,最后打印出了NSDictionary对象中的内容。其中,jsonData表示需要解析的JSON格式数据,options参数用于设置解析JSON格式数据时的选项,error参数用于存储序列化错误时的信息。

示例1

假设我们需要生成一个包含学生姓名、年龄、籍贯、爱好的JSON格式数据。具体代码如下:

NSError *error = nil;
NSDictionary *stuDict = @{@"name": @"Mike", @"age": @20, @"hometown": @"Shanghai", @"hobby":@[@"reading", @"swimming", @"music"]};
NSData *data = [NSJSONSerialization dataWithJSONObject:stuDict options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

以上代码将一个NSDictionary对象序列化成了一个JSON格式的NSData对象,并将NSData对象转成了NSString对象,最终得到了一个JSON格式的字符串。其中,stuDict是学生信息的字典对象。

示例2

假设我们需要解析服务器返回的JSON格式数据,并在应用中展示。服务器返回的JSON格式数据如下:

{
    "code": 200,
    "message": "OK",
    "data": {
        "totalCount": 100,
        "resultList": [{
            "name": "Tom",
            "age": 18,
            "city": "Beijing"
        },
        {
            "name": "Mike",
            "age": 20,
            "city": "Shanghai"
        }]
    }
}

我们需要解析服务器返回的JSON格式数据,并展示到应用界面上。具体代码如下:

NSError *error = nil;
NSString *jsonString = @"{\"code\":200,\"message\":\"OK\",\"data\":{\"totalCount\":100,\"resultList\":[{\"name\":\"Tom\",\"age\":18,\"city\":\"Beijing\"},{\"name\":\"Mike\",\"age\":20,\"city\":\"Shanghai\"}]}}";
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
id object = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
if ([object isKindOfClass:[NSDictionary class]]) {
    NSDictionary *resultDict = (NSDictionary *)object;
    NSArray *resultList = resultDict[@"data"][@"resultList"];
    NSLog(@"totalCount:%@", resultDict[@"data"][@"totalCount"]);
    for (NSDictionary *dict in resultList) {
        NSLog(@"name:%@\n age:%@\n city:%@", dict[@"name"], dict[@"age"], dict[@"city"]);
    }
}

以上代码将一个JSON格式的字符串解析成了一个NSDictionary对象,并打印出了NSDictionary对象中的内容。其中,jsonString表示需要解析的JSON格式数据。resultList是一个数组,里面包含多个字典对象,每个字典对象表示一条信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:谈谈iOS开发之JSON格式数据的生成与解析 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • JS中循环遍历数组的四种方式总结

    JS中循环遍历数组的四种方式总结 在JavaScript编程中,遍历数组是一个非常常见的操作。在本文中,我将介绍四种JS中循环遍历数组的方式,它们分别是: for循环 forEach()方法 map()方法 for…in循环 1. for循环 for循环是最基本也是最常用的JS中遍历数组的方法。它的语法如下: for(let i = 0; i < …

    C 2023年5月22日
    00
  • Clion下vcpkg的使用详解

    Clion是一个流行的C++开发环境,而vcpkg是一个C++库管理器,旨在简化依赖项安装和管理。本文将简要介绍Clion中如何使用vcpkg。 安装vcpkg 首先,需要下载并安装vcpkg,可以从https://github.com/microsoft/vcpkg上下载最新版本的vcpkg。 接下来,我们需要将vcpkg添加到系统路径中,然后打开命令行工…

    C 2023年5月23日
    00
  • C/C++ INI文件操作实现代码

    关于C++ INI文件操作实现代码的攻略,我提供以下完整步骤: 1. 什么是INI文件 INI文件是一种配置文件,通常用于应用程序的配置、选项和设置。INI文件通常是一个文本文件,包含了特定格式的键值对。INI文件的键值对格式如下: [section] key=value 其中,[]括起来的是一个section,下面的key=value就是在这个sectio…

    C 2023年5月24日
    00
  • NodeJs基本语法和类型

    Node.js是一种运行在服务器端的JavaScript,可以用于构建高效的事件驱动应用程序。在使用Node.js时,掌握其基本语法和类型非常重要。 基本语法 注释 JavaScript中的注释分为两种:单行注释和多行注释。单行注释用//表示,多行注释用/…/表示。 // 这是单行注释 /* 这是 多行 注释 */ 变量 使用var、let、const声…

    C 2023年5月23日
    00
  • C 语言基础教程(我的C之旅开始了)[二]

    C 语言基础教程(我的C之旅开始了)[二]攻略 1. 基本数据类型 文章中提到了 C 语言的基本数据类型,包括了整型、浮点型、字符型和指针型。其中整型可以分为有符号和无符号两种,我们可以通过给数据类型指定修饰符来定义它是有符号还是无符号的。 此外,C 语言还有一个关键字 typedef,它可以为现有的数据类型创建一个新的别名。比如我们可以给 unsigned…

    C 2023年5月23日
    00
  • c语言中&的用法示例代码

    下面是关于 C 语言中 & 的用法攻略,针对此问题,我们需要从以下两个方向进行讲解: 变量声明和引用时的 & 符号使用 当我们声明一个变量时,可以使用 & 符号获取该变量的地址。例如: int x = 10; int *p = &x; 上述代码中,我们声明了一个整型变量 x,并将其初始化为 10。然后,我们使用指针变量 p 来…

    C 2023年5月24日
    00
  • 位操作运算

    1. 位运算 百度百科如下: 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。 2. 位操作的优势 位运算是一种底层的运算,往往比我们普通的运算要快上许多许多 位运算是最高效而且占用内存最少的算法操作,执行效率非常高 位运算操作的是二进制数,会拥有一些二进制的特性,在实际问题可以方便运用 位运算只需较低的…

    C语言 2023年4月18日
    00
  • C语言 详细讲解#pragma的使用方法

    C语言 详细讲解#pragma的使用方法 什么是#pragma指令 #pragma 是一种编译器辅助命令,它可以用来修改编译器的行为或者是指示编译器生成一些特定的信息。该指令一般系统指令(system directive),与C语言不直接相关。 #pragma指令的语法 下面是 #pragma 指令的语法: #pragma pragma-name [opti…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部