您的位置:

iosjson解析数据(ios 解析json)

iosjson解析数据(ios 解析json)

更新:

本文目录一览:

iOS Swift JSONEncoder和JSONDecoder解析数据

本人亲测有效!绝对可靠!更多交流可以家魏鑫:lixiaowu1129,一起探讨iOS相关技术!

一个对象如果需要被编码/解码的话,该对象所属的类需要遵循 Decodable Encodable 协议。

以 Player 这类为例,Player遵循了 Decodable 和 Encodable

初始化一个Player对象,并对其进行编码和解码,看看编码和解码之后的数据

一个对象被jsonEncode后,对象将被转成 Data 类型的数据。

再将对象的 Data 数据通过jsonDecode,可以还原原来的对象。

通过对对象的json编码和解码,有助于我们理解数据在计算机中的存储。Data 其本质就是二进制流。

这是一个字符串

如何将其解析成player对象?

这种情况多用于客户端向服务端发送HTTP请求之后,解析返回数据,如果后台返回的是标准的JSON字符串的话直接这样解析就可以了。

Serialization 是序列化的意思,JSONSerialization 顾名思义是对JSON进行序列化。

JSONSerialization 是对 JSON 字符串进行序列化和反序列化的工具类。用这个类可以将JSON转成对象,也可以将对象转成JSON。

打印结果为:

这是一个标准的,带转义的JSON字符串。也就是说我们将字典转成了JSON字符串。

打印结果为:

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数据怎么解析

刚刚下午那会 弄了个 解析 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格式数据

导语: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"]);

iosjson解析数据(ios 解析json)

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

2023-12-08
iosjson格式,ios ndjson

本文目录一览: 1、iOS post请求向服务器发送json格式数据(数组或字典) 2、ios 怎么xcode制作json格式文件 3、iOS JSON转字典 4、怎么生成和解析iOS开发JSON格式

2023-12-08
core解析json的笔记(c json解析)

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

2023-12-08
iosjson编辑器(Json编辑器)

本文目录一览: 1、苹果手机如何打开json文件 2、苹果手机怎么打开ndjson文件 3、ios 怎么xcode制作json格式文件 4、json精灵编辑器载入失败 苹果手机如何打开json文件 (

2023-12-08
ios解析json奔溃,ios解析json崩溃

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

2023-12-08
详解ios中json解析的实例,ios json转model

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

2022-11-24
c读取并解析json数据,net解析json

本文目录一览: 1、C++ json解析 2、JSON解析器json-c 3、cjson数组如何解析 4、如何使用c语言获取文件中的json数据 5、C#中怎么解析JSON数据? 6、c如何解析jso

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

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

2023-12-08
java解析jsonp,java解析json数组对象

2022-11-25
ios打开json文件(ios查看json文件)

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

2023-12-08
java中json数据的解析,java怎么解析json

2022-11-19
java解析json,Java解析JSON数组

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

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

2023-12-08
Java解析JSON报文详解

2023-05-23
iappjson解析源码(iapp解析接口反馈的json)

本文目录一览: 1、iOS开发问题:已经获得了json字符串,怎么解析并显示到tableview上 2、谁会用iapp源码,求教。 3、jquery解析json怎么解析 4、开源Json处理工具是如何

2023-12-08
php解析json数据的源代码(php生成json数据)

2022-11-16
python笔记二(2python)

2022-11-11
iosjs报错(ios解析json崩溃)

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

2023-12-08
phpjson解析不(PHP解析json)

本文目录一览: 1、php代码中不能解析json吗 2、php 解析不了json 3、PHP返回的JSON里含有未知字符使数据无法解析 4、php解析不了JSON? php代码中不能解析json吗 额

2023-12-08