您的位置:

详解ios中json解析的实例,ios json转model的原理

本文目录一览:

iOS中JSON数据的解析

NSJSONSerialization提供了JSON数据封包、JSON数据解析,NSJSONSerialization将JSON数据转换为NSDictionary或NSArray解包方法,将NSDictionary、NSArray对象转换为JSON数据(可以通过调用isValidJSONObject来判断NSDictionary、NSArray对象是否可以转换为JSON数据)封包。

NSJSONSerialization Class Reference

ios开发中,带小括号的JSON怎么解析

使用 IOS5自带解析类NSJSONSerialization方法解析:(无需导入包,IOS5支持,低版本IOS不支持)

- (void)btnPressIOS5Json:(id)sender {

NSError *error;

//加载一个NSURL对象

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@""]];

//将请求的url数据放到NSData对象中

NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

//IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中

NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:error];

NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];

NSString *detail = [NSString stringWithFormat:@"今天是 %@ %@ %@ 的天气状况是:%@ %@ ",[weatherInfo objectForKey:@"date_y"]

,[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"],[weatherInfo objectForKey:@"weather1"]

,[weatherInfo objectForKey:@"temp1"]];

NSLog(@"%@",detail);

NSLog(@"weatherInfo字典里面的内容为--》%@", weatherDic );

}

在ios中json数据怎么解析

刚刚下午那会 弄了个 解析 xml  demo的小例子,本想着json也挺复杂 弄还是 不弄,但是简单的看了下 发现挺简单

考虑了很久,还是写上来吧,毕竟json用得太多了,而且算是自己的积累吧,毕竟刚开始学习IOS开发方面的知识,就当是巩固了撒!

还是 先看个效果图吧,如下!

接下来 看下工程目录吧,其实并没有必要,直接建立一个工程就行 ,算了,还是贴上来吧,如下:

工程目录中有个 Notes.json 文件,该文件就是 要解析的json数据了 ,也截下图吧,如下:

Ok ,以上准备完毕,就开始编码了,在此之前故事版的内容 就和我上篇博客文章 IOS 解析xml 故事版 是一样配置的,这里就不在啰嗦了 ,首先看下 chonViewController.h文件,代码如下:

//

//  chonViewController.h

//  TestJson

//

//  Created by choni on 14-5-16.

//  Copyright (c) 2014年 choni. All rights reserved.

//

#import UIKit/UIKit.h

@interface chonViewController : UITableViewController

//保存数据列表

@property(nonatomic,strong) NSMutableArray * listData;

@end

与之对应的 chonViewController.m文件 代码如下:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片

//

//  chonViewController.m

//  TestJson

//

//  Created by choni on 14-5-16.

//  Copyright (c) 2014年 choni. All rights reserved.

//

#import "chonViewController.h"

@interface chonViewController ()

@end

@implementation chonViewController

- (void)viewDidLoad

{

  [super viewDidLoad];

 

 

  NSString * path = [[NSBundle mainBundle]pathForResource:@"Notes" ofType:@"json" ];

  NSData * jsonData = [[NSData alloc] initWithContentsOfFile:path];

 

  NSError * error ;

  id jsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:error];

  if (!jsonObj || error) {

      NSLog(@"JSON解析失败");

  }

  self.listData = [jsonObj objectForKey:@"Record"];

 

 

}

#pragma mark - tableView

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

  return 1;

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

  return self.listData.count;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

 

  NSMutableDictionary * dict = self.listData[indexPath.row];

  cell.textLabel.text = [dict objectForKey:@"Content"];

  cell.detailTextLabel.text = [dict objectForKey:@"CDate"];

  return cell ;

}

- (void)didReceiveMemoryWarning

{

  [super didReceiveMemoryWarning];

}

@end

Ok , 现在就可以编译运行的程序了 ,但是有个主意的地方  :

1.因为使用 NSJSONSerialization 实现json解码,要确定你得项目使用IOS 5 SDK 才可以

2. 其他的就没有什么了,介绍下NSJSONSerialization的类方法吧

 1)NSJSONReadingMutableContaines ,指定解析返回的是可变的数组或字典 ,这个方法还是比较使用的,因为如果json数据需要改,不用管撒

 2)NSJSONReadingMutableLeaves ,指定叶节点是可变的字符串

 3)   NSJSONReadingAllowFragments , 指定顶级节点可以部署数组或字典

iOS开源JSON解析库MJExtension

iOS中JSON与NSObject互转有两种方式:1、iOS自带类NSJSONSerialization 2、第三方开源库SBJSON、JSONKit、MJExtension。项目中一直用MJExtension来进行JSON与Model的互转,非常方便、强大,接下来介绍一下这个轻量、强大的开源库。

1、什么是MJExtension?

MJExtension是一套字典和模型之间互相转换的轻量级开源框架,github地址为: GitHub - CoderMJLee/MJExtension: A fast 。功能如下:

2、MJExtension架构

1)UML类图

2)类介绍

3、MJExtension JSON转Model流程图

4、MJExtension用法举例

关于用法详情请见: GitHub - CoderMJLee/MJExtension: A fast 。我这里只介绍两种常用的用法,JSON转Model,JSON转Model数组

怎么生成和解析iOS开发JSON格式数据

导语:JSON作为数据包格式传输的时候具有更高的效率,这是因为JSON不像XML那样需要有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输压力。JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

怎么生成和解析iOS开发JSON格式数据?

一、如何生成JSON格式的'数据?

1、利用字典NSDictionary转换为键/值格式的数据。

// 如果数组或者字典中存储了 NSString, NSNumber, NSArray, NSDictionary, or NSNull 之外的其他对象,就不能直接保存成文件了.也不能序列化成 JSON 数据.

NSDictionary *dict = @{@"name" : @"me", @"do" : @"something", @"with" : @"her", @"address" : @"home"};

// 1.判断当前对象是否能够转换成JSON数据.

// YES if obj can be converted to JSON data, otherwise NO

BOOL isYes = [NSJSONSerialization isValidJSONObject:dict];

if (isYes) {

NSLog(@"可以转换");

/* JSON data for obj, or nil if an internal error occurs. The resulting data is a encoded in UTF-8.

*/

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];

/*

Writes the bytes in the receiver to the file specified by a given path.

YES if the operation succeeds, otherwise NO

*/

// 将JSON数据写成文件

// 文件添加后缀名: 告诉别人当前文件的类型.

// 注意: AFN是通过文件类型来确定数据类型的!如果不添加类型,有可能识别不了! 自己最好添加文件类型.

[jsonData writeToFile:@"/Users/SunnyBoy/Sites/JSON_XML/dict.json" atomically:YES];

NSLog(@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);

} else {

NSLog(@"JSON数据生成失败,请检查数据格式");

}

2、通过JSON序列化可以转换数组,但转换结果不是标准化的JSON格式。

NSArray *array = @[@"qn", @18, @"ya", @"wj"];

BOOL isYes = [NSJSONSerialization isValidJSONObject:array];

if (isYes) {

NSLog(@"可以转换");

NSData *data = [NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];

[data writeToFile:@"/Users/SunnyBoy/Sites/JSON_XML/base" atomically:YES];

} else {

NSLog(@"JSON数据生成失败,请检查数据格式");

}

二、如何解析JSON格式的数据?

1、使用TouchJSon解析方法:(需导入包:#import "TouchJson/JSON/CJSONDeserializer.h")

//使用TouchJson来解析北京的天气

//获取API接口

NSURL *url = [NSURL URLWithString:@""];

//定义一个NSError对象,用于捕获错误信息

NSError *error;

NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:error];

NSLog(@"jsonString---%@",jsonString);

//将解析得到的内容存放字典中,编码格式为UTF8,防止取值的时候发生乱码

NSDictionary *rootDic = [[CJSONDeserializer deserializer] deserialize:[jsonString dataUsingEncoding:NSUTF8StringEncoding] error:error];

//因为返回的Json文件有两层,去第二层内容放到字典中去

NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];

NSLog(@"weatherInfo---%@",weatherInfo);

//取值打印

NSLog(@"%@",[NSString stringWithFormat:@"今天是 %@ %@ %@ 的天气状况是:%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]);

2、使用SBJson解析方法:(需导入包:#import "SBJson/SBJson.h")

//使用SBJson解析北京的天气

NSURL *url = [NSURL URLWithString:@""];

NSError *error = nil;

NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:error];

SBJsonParser *parser = [[SBJsonParser alloc] init];

NSDictionary *rootDic = [parser objectWithString:jsonString error:error];

NSDictionary *weatherInfo = [rootDic objectForKey:@"weatherinfo"];

NSLog(@"%@", [NSString stringWithFormat:@"今天是 %@ %@ %@ 的天气状况是:%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]]);

3、使用IOS5自带解析类NSJSONSerialization方法解析:(无需导入包,IOS5支持,低版本IOS不支持)

// 从中国天气预报网请求数据

NSURL *url = [ NSURL URLWithString:@""];

// 创建请求

NSURLRequest *request = [NSURLRequest requestWithURL:url];

[[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

// 在网络完成的 Block 回调中,要增加错误机制.

// 失败机制处理: 错误的状态码!

// 最简单的错误处理机制:

if (data !error) {

// JSON格式转换成字典,IOS5中自带解析类NSJSONSerialization从response中解析出数据放到字典中

id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];

NSDictionary *dict = obj[@"weatherinfo"];

NSLog(@"%@---%@", dict, dict[@"city"]);

}

}] resume];

4、使用JSONKit的解析方法:(需导入包:#import "JSONKit/JSONKit.h")

//如果json是“单层”的,即value都是字符串、数字,可以使用objectFromJSONString

NSString *json1 = @"{\"a\":123, \"b\":\"abc\"}";

NSLog(@"json1:%@",json1);

NSDictionary *data1 = [json1 objectFromJSONString];

NSLog(@"json1.a:%@",[data1 objectForKey:@"a"]);

NSLog(@"json1.b:%@",[data1 objectForKey:@"b"]);

//如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能会报错(测试结果表明:使用由网络或得到的php/json_encode生成的json时会报错,但使用NSString定义的json字符串时,解析成功),最好使用objectFromJSONStringWithParseOptions:

NSString *json2 = @"{\"a\":123, \"b\":\"abc\", \"c\":[456, \"hello\"], \"d\":{\"name\":\"张三\", \"age\":\"32\"}}";

NSLog(@"json2:%@", json2);

NSDictionary *data2 = [json2 objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];

NSLog(@"json2.c:%@", [data2 objectForKey:@"c"]);

NSLog(@"json2.d:%@", [data2 objectForKey:@"d"]);

详解ios中json解析的实例,ios json转model

2022-11-25
ios处理json字符串,ios json

2022-11-24
ios转json(ios转json字符串)

本文目录一览: 1、ios 怎么把参数包装成json 2、ios字典怎么转换成json字符串 3、ios 怎么xcode制作json格式文件 4、怎么生成和解析iOS开发JSON格式数据 ios 怎么

2023-12-08
iOS中JSON转字典详解

2023-05-17
ios解析json奔溃,ios解析json崩溃

本文目录一览: 1、IOS开发 JSON解析字符串错误 2、json数据解析出错应该怎么办? 3、json解析失败是什么意思? IOS开发 JSON解析字符串错误 可以使用NSDictionary中的

2023-12-08
iosjson解析数据(ios 解析json)

本文目录一览: 1、iOS Swift JSONEncoder和JSONDecoder解析数据 2、ios json 怎么解析 3、在ios中json数据怎么解析 4、怎么生成和解析iOS开发JSON

2023-12-08
ios打开json文件(ios查看json文件)

本文目录一览: 1、iPad下载json文件直接打开了 2、json格式怎么打开 3、iOS开发,json文件如何使用 4、苹果手机怎么打开ndjson文件 5、怎么生成和解析iOS开发JSON格式数

2023-12-08
iOS字典转JSON

2023-05-20
core解析json的笔记(c json解析)

本文目录一览: 1、如何解析json中map数据 2、fasterxml.jackson.core.jsonparser.feature是哪个jar包的 3、spring mvc 怎么获取json 4

2023-12-08
ios捷径处理json,ios捷径变量怎么用

本文目录一览: 1、苹果手机如何打开json文件 2、ios中怎样用json 3、在iOS的JSON处理:去除换行符问题,怎么解决 4、怎么生成和解析iOS开发JSON格式数据 5、ios开发,要获取

2023-12-08
ios字典与json,ios字典取值

本文目录一览: 1、ios字典怎么转换成json字符串 2、iOS post请求向服务器发送json格式数据(数组或字典) 3、ios开发中怎么用字典写成一个json 4、iOS JSON转字典 io

2023-12-08
整套json代码,json示例

本文目录一览: 1、IOS 开发 :求一套json转模型的代码。 2、求java合并json数据的代码 3、VB json解析代码 4、PHP JSON格式数据交互实例代码详解 5、PHP JSON

2023-12-08
在线json转cmodel(json格式转换)

本文目录一览: 1、如何将json转成对应的model 2、YYModel的json转model,model转json完后调用的方法 3、iOS项目中Json转Model的坑 4、C#json转为对象

2023-12-08
iosjs报错(ios解析json崩溃)

本文目录一览: 1、怎么解决js在ios中播放音频.play方法报错的问题 2、把游戏程序生成ios时,js中调用c#代码报错是为什么 3、苹果手机出现不受支持的计划: Javascript Java

2023-12-08
iOS开发:将JSON字符串转换为字典的实现方法

2023-05-19
ios获取json,ios获取设备唯一标识

2022-12-01
iOS数组转字符串

2023-05-18
ios支持jsp么,ios打开jsp

本文目录一览: 1、苹果手机如何查看jsp文件? 2、请问phonegap怎么打包webapp成为ios应用、webapp前端都是jsp页面、后台是java写的。phonegap支持吗? 3、苹果电脑

2023-12-08
pythonjson转model,python json转换

本文目录一览: 1、【Python】浅谈python中的json 2、用python怎么实现json和xml的互转 3、django model如何转换成json? 4、在python中 如何实现将一

2023-12-08
json解析c实现(c++json解析库)

本文目录一览: 1、怎么用C语言获取JSON中的数据? 2、c#解析JSON的几种办法 3、C++ json解析 怎么用C语言获取JSON中的数据? 用C语言获取JSON中的数据的方法是使用 CJSO

2023-12-08