JSON

JSON数据处理,一条龙服务

字号+ 作者:H5之家 来源:H5之家 2017-02-02 09:01 我要评论( )

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文

一丶简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。_摘抄自百度;

iOS对JSON数据的处理,我把它分为以下几个步骤 1.获取json数据; 2.建立模型; 3.连接数据; 4.生成description 二丶开始上干货 1.获取JSON数据:

1.1为了方便查看JSON数据可以使用以下网址:

可以格式化JSON代码

JSON在线解析及格式

JSON在线编辑器

示例数据 { "array": [ 1, 2, 3 ], "sex": true, "age": 12, "id":95757, "other": { "a": "b", "c": "d", "e": "f" }, "speak": "Hello World" } 2.建立模型

这里介绍2种自动生成属性方式:

2.1 插件

ESJsonFormat :https://github.com/EnjoySR/ESJsonFormat-Xcode

Paste_Image.png

效果图展示:

Paste_Image.png

2.2Json-Property-Creat-Code

Json-Property-Creat-Code

这个功能比较强大

json数据生成model 支持KVC,JSModel, model会自动归档 例如输入一个json数据网址,或者将返回的json数据放入展开的输入框中,再输入要生成的model名字,点击生成就可以在桌面上看到你所要的model 可以无限嵌套哦,总而言之,不需要你写一句代码,这个model可以直接使用

效果图展示:

Paste_Image.png

Paste_Image.png

好用,谁用谁知道;

3.连接数据;

3.1

MJExtension(https://github.com/CoderMJLee/MJExtension)

**1> 字典 -> 模型 **2> 模型 -> 字典 **3> 字典数组 -> 模型数组 **4> 模型数组 -> 字典数组

这个不多介绍了,里面介绍很详细,都是中文;

提下,用到系统关键字处理方法:

+ (NSDictionary*)mj_replacedKeyFromPropertyName { return@{@"theID":@"id"}; }

3.2

还有一个YYKit

这个也不错,但是解析速度没有MJExtension快;

4.生成description

思路:利用Runtime获取类的所有属性,然后遍历拼接成一个字符串;

代码已封装如下,继承使用

#import "BaseObject.h" static NSMutableDictionary *modelsDescription = nil; @implementation BaseObject + (void)load { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ modelsDescription = [NSMutableDictionary dictionary]; }); } - (NSDictionary *)mapPropertiesToDictionary { NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; Class cls = [self class]; uint ivarsCount = 0; Ivar *ivars = class_copyIvarList(cls, &ivarsCount); const Ivar *ivarsEnd = ivars + ivarsCount; for (const Ivar *ivarsBegin = ivars; ivarsBegin < ivarsEnd; ivarsBegin++) { Ivar const ivar = *ivarsBegin; NSString *key = [NSString stringWithUTF8String:ivar_getName(ivar)]; if ([key hasPrefix:@"_"]) key = [key substringFromIndex:1]; id value = [self valueForKey:key]; [dictionary setObject:value ? value : [NSNull null] forKey:key]; } if (ivars) { free(ivars); } return dictionary; } - (NSString *)description { NSMutableString *str = [NSMutableString stringWithFormat:@"------<%@>------\n", NSStringFromClass([self class])]; NSDictionary *dic = [self mapPropertiesToDictionary]; [dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { [str appendFormat:@"< %@ = %@ >\n", key, obj]; }]; [str appendString:@"------<End>------"]; return str; } @end 三丶扩展:

1.有时候服务器返回的JSON中,某个字典是以字符串形式展示,以下扩展,直接使用,不用谢;

@implementation NSString (Extension) - (NSDictionary *)dictionaryWithJsonString { if (self == nil) { return nil; } ]; NSError *err; &err]; if (err) { Log(@"json解析失败:%@", err); return nil; } return dic; } @end

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • json格式解析和libjson的用法介绍(关于cjson的使用方法)

    json格式解析和libjson的用法介绍(关于cjson的使用方法)

    2017-02-02 13:04

  • 使用PHP从MySQL创建JSON并用JQuery解析

    使用PHP从MySQL创建JSON并用JQuery解析

    2017-02-02 08:00

  • Json字符串转换为java对象的各种实现方法

    Json字符串转换为java对象的各种实现方法

    2017-02-02 08:00

  • 打印json的错误级别json

    打印json的错误级别json

    2017-02-01 18:02

网友点评
>