Ⅰ 怎么生成和解析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:@"http://m.weather.com.cn/data/101010100.html"];
//定义一个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:@"http://www.weather.com.cn/adat/sk/101010100.html"];
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:@"http://www.weather.com.cn/adat/sk/101010100.html"];
// 创建请求
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字符串时,解析成功),最好使用:
NSString *json2 = @"{"a":123, "b":"abc", "c":[456, "hello"], "d":{"name":"张三", "age":"32"}}";
NSLog(@"json2:%@", json2);
NSDictionary *data2 = [json2 :JKParseOptionLooseUnicode];
NSLog(@"json2.c:%@", [data2 objectForKey:@"c"]);
NSLog(@"json2.d:%@", [data2 objectForKey:@"d"]);
Ⅱ Mac-json数据快速转成plist数据
我们自己写demo的时候会需要一些假数据,上一篇 《Mac上青花瓷抓包工具的使用》 已经获取到了数据。那么如何快速的将 json 数据转化为 plist 数据呢? 1.创建一个 .json 类型的文件 点击文本编辑器,什么数据都不添加,
添加后缀 .json ,将 data 改为 data.json ,如下图所示:
这时已经转化为 .json 类型的文件,我们把 data.json 放进 XCode 中,发现 data.json 里的数据已经发生了变化,如下图:
这就是在新建 data.rtf 文件的时候什么数据都不添加的原因,因为添加的数据正确, data.json 文件添加到xcode 中也会发生转换,添加到xcode后,我们将json格式的假数据复制到 data.json 文件中,再次导出 data.json 文件,如下图所示:
2.创建plist文件
3.json 数据转化 plist数据
下面是一些转换指令,可以直接用
json to plist命令:
plist to json命令:
⚠️:如果在终端命令转化过程中,转化报错,极有可能是json数据格式有误,或者plist文件格式有误,比如 json数据如下图所示就会报错,我们需要将数据对齐。
同样的操作plist数据也能很快转化为json数据。
先记录这些,感谢阅读,如有错误,不吝赐教!
Ⅲ macbook air怎么创建json文件
方法1:建立一个与 json 结构相同的类(类名随便、属性名不区分大小写),反序列化成对象using System.Web.Script.Serialization;public class JsonModel { public airTicketRuleResponse airTicketRuleResponse { get; set; }}public class airTicketRuleResponse { public rules rules { get; set; } public string customerSessionId {get;set;} public int maxSeats { get; set; }}public class rules { public string package { get; set; } public string change { get; set; } public string cancellation { get; set; } public string other { get; set; }}static void Main(string[] args) { string str = "{\"airTicketRuleResponse\"….."; //反序列化 JsonModel m = new JavaScriptSerializer().Deserialize<JsonModel>(str);
Ⅳ 关于如何创建json文件
private final static String dir = "path_to_your_directory";private String fileName = "test.json";FileOutputStream out = new FileOutputStream(dir + File.separator + fileName, true);如果文件存在就获取到out,不存在就创建一个文件。
Ⅳ ios怎么创建一个json文件
json文件和plist文件类似,只是json多一步解析的操作;现在常用的解析如下;NSString *path = [[NSBundle mainBundle] pathForResource:@"mJson" ofType:@"json"]; NSData *jsonData = [NSData dataWithContentsOfFile:path options:NSDataReadingMappedIfSafe error:nil]; NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options: error:nil];得到字典类型的数据后就可以使用了
Ⅵ java如何创建Json文件
如果聊天数据的结构是固定的或变化不大的。就直接“编排”json字符串。为要输出的对象内增加一个String toJSON()方法StringBuilder b=new StringBuilder();b.append("{ name:\"");b.append(username);b.append("\"}");依次类容推return b.toString();适合绝大多数情况。补充:json是做交换格式,查询效率非常低,如果做存储的检索格式就误用了。就是说“聊天信息的保存用json应该可以吧”还不如你之前的mysql数据库。json用在客户端往服务端发送的通讯交换数据的格式上。服务端收到后转为数据库中或内存中存放。
Ⅶ APP发布到APP store时限制区域geojson格式文件怎么生成
发布步骤登陆苹果开发者中心(99美元账号)进入itunes connect选择Manage Your Apps选择Add New App填写项目相关信息,不知道怎么填的点击问号查看,Bundle ID Suffix需要与上一篇申请发布证书中锁填的后缀一致,否则在上传项目时会出错,需要重新打包然后是选择项目价格和日期接下来的页面要填写项目的完整信息URL可以填写自己的主页,公司的主页等,会被展示在itunes中的,这个URL千万不可填写微博主页等需要登陆后才能查看的链接,有网友因为填写微博链接被拒,实在不行,填写博客地址也可的④ 联系人信息可以填写自己,也可以填写公司的,demo Account 如果App中需要登陆,可以提供一个测试账号方便苹果审核时调试⑤上传的图片都是在ituns中展示所用的。3.5-Inch的图片尺寸是960*640或者640*960,或960*600,或620*900,这几种尺寸都可以。4-Inch的图片尺寸是1136×640, 1136×600, 640×1136 或者 640×1096, 截图最好是真机调试时按住电源键和home键截,这样尺寸肯定不会错的。点击继续之后会出现,项目是等待上传状态,可以选择edit编辑项目的相关信息接下来打包应用程序(前提,已经申请过发布证书并安装,未申请的请参照本文开头的链接进行操作)a.打开Xcode,选择Proct->Archiveb.然后选择distribute…c.选择第二个d.选择发布证书点击next之后便会生成.ipa文件3.上传.ipa文件,,需要用mac自带的Application Loadera.在finder中选择应用程序(Applications)->右键选择Xcode->显示包内容->contents->Applications->Application Loaderb.打开Application Loader会出现登录界面,同样用登录开发者中心的账号登录,第一次登录会出现一个接受协议页面,打√后继续就行了c.进入后选择Deliver Your App,会出现你在developer中心填写的项目,是等待上传状态,选择上传ipa就可以了。4.上传成功后再回到开发者中心,刷新页面就会发现项目是等待审核状态了,正常审核周期是5个工作日此时邮箱会收到苹果的邮件,审核结果出来后也会收到邮件
Ⅷ ios 怎么xcode制作json格式文件
1. 如何下载ios7模拟器点击xcode,选择“Preferences”,选择“downloads”,就可以看见IOS 7.1,不过下载有点慢。2. 如何快速下载呢进入目录/Users//Library/Caches/com.apple.dt.Xcode/Downloads 将.dvtdownloadableindex 类似文件重命名成.plist后缀文件。3.安装完ios,如何使xcode使用ios安装的目录:/Users/username/Library/Application Support/iPhone Simulator目录位置都一样,都是在Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs里面然后重启Xcode应该就可以了。