Gup*_*R4c 30 xcode json ios ios5.1
我在iOS 5上解析下面的JSON字符串很困难.
{"States": [{"Name": "Arizona","Cities": [{"Name": "Phoenix"}]},{"Name": "California","Cities": [{"Name": "Orange County"},{"Name": "Riverside"},{"Name": "San Diego"},{"Name": "San Francisco"}]},{"Name": "Nevada","Cities": [{"Name": "Las Vegas"}]}]}
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
- (void) parseJson {
NSError *jsonError = nil;
NSData *jsonData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Locations-JSON" ofType:@"rtf"]];
if (jsonData) {
NSDictionary *jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&jsonError];
if (jsonError) {
NSLog(@"JSON Error: %@", [jsonError localizedDescription]);
return;
}
NSLog(@"%@", jsonObjects);
}
}
Run Code Online (Sandbox Code Playgroud)
我一直收到这个错误:
JSON Error: The operation couldn’t be completed. (Cocoa error 3840.)
我很欣赏这方面的一些帮助,因为我显然无法解决这个问题.
Dav*_*ong 23
有一件事让我感到不正确的是:
[[NSBundle mainBundle] pathForResource:@"Locations-JSON" ofType:@"rtf"]
Run Code Online (Sandbox Code Playgroud)
你的数据是RTF文件?? 它应该是一个txt文件(或任何其他类型的纯文本文件).RTF文件通常包含文本格式数据,如下所示:
{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf470
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural
\f0\fs24 \cf0 \{"States": [\{"Name": "Arizona","Cities": [\{"Name": "Phoenix"\}]\},\{"Name": "California","Cities": [\{"Name": "Orange County"\},\{"Name": "Riverside"\},\{"Name": "San Diego"\},\{"Name": "San Francisco"\}]\},\{"Name": "Nevada","Cities": [\{"Name": "Las Vegas"\}]\}]\}}
Run Code Online (Sandbox Code Playgroud)
当我将其作为数据读取并尝试将其解析为JSON时,我得到了您所看到的3840错误.该错误的描述说:
无法读取数据,因为它已损坏.(字符2周围的对象中的值没有字符串键.)
所以它对我来说是你实际上没有JSON.你有RTF数据.
小智 11
我遇到了类似的问题.当我从服务器下载JSON数据时,我的JSON解析器会间歇性地工作.您是否从此功能获得了JSON数据?
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
Run Code Online (Sandbox Code Playgroud)
从此函数返回的NSData可能是部分数据.您需要将appendData附加到类型为:NSMutableData的实例变量.然后在另一个函数中处理JSON,如下所示:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
Run Code Online (Sandbox Code Playgroud)
阅读这篇文章了解详情.这个对我有用
kra*_*vil 10
我能够通过将NSData对象转换为以下内容来解决我的JSON 3840错误NSString:
NSError *error;
NSObject *object = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
if (object == nil) {
NSString *serverResponse = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding];
NSLog(@"\n\nError:\n%@\n\nServer Response:\n%@\n\nCrash:", error.description, serverResponse);
[NSException raise:@"Invalid Data" format:@"Unable to process web server response."];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60062 次 |
| 最近记录: |