一尘不染

iOS 5 JSON解析结果可可错误3840

json

我很难在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"}]}]}

这是我的代码:

- (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);
}
}

我不断收到此错误:

JSON Error: The operation couldn’t be completed. (Cocoa error 3840.)

我很乐意为此提供一些帮助,因为我明确并且无力解决此问题。


阅读 245

收藏
2020-07-27

共1个答案

一尘不染

让我感到不正确的一件事是:

[[NSBundle mainBundle] pathForResource:@"Locations-JSON" ofType:@"rtf"]

您的数据是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"\}]\}]\}}

当我读到 的是 作为一个数据和尝试解析它作为JSON,我得到了3840的错误你看到。该错误的说明说:

数据已损坏,无法读取。(在字符2周围的对象中没有值的字符串键。)

因此,对我来说,您实际上没有JSON。您有RTF数据。

2020-07-27