无法从ion中获取没有密钥的Json中的值

时间:2015-04-23 11:17:56

标签: ios objective-c json

[
    {
        "Id": 52,
        "Name": "name1",
        "author": "john"
    },
    {
        "Id": 53,
        "Name": "name2",
        "author": "jacob"
    },
    {
        "Id": 54,
        "Name": "name3",
        "author": "jobin"
    }
]

我使用以下代码来获取和解析没有主键的json数组

SBJsonParser *parser1 = [[SBJsonParser alloc] init];
   NSURLRequest *request1 = [NSURLRequest requestWithURL:[NSURL URLWithString:str2]];
    // Perform request and get JSON back as a NSData object
    NSData *response1 = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil];
    NSError *error;
   NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:response1 options:kNilOptions error:&error];

但我得到以下异常

data parameter is nil 

此代码发生此异常

NSData *response1 = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil];

如何迭代id值?

3 个答案:

答案 0 :(得分:1)

这里有一系列JSON文件,所以我会:

NSArray *jsonArray = ; //your JSON

for (NSDictionary *dict in jsonArray) {
    NSInteger number = [dict[@"Id"] intValue];
    NSString *name = dict[@"Name"];
    NSString *author = dict[@"author"];
}

答案 1 :(得分:0)

您给出的是完美的,它正在为我工​​作尝试检查您的API 并且您没有使用SBJson也尝试打印NSLog("%@",jsonArray);

答案 2 :(得分:0)

sendSynchronousRequest的返回值为void。所以数据参数为零是有意义的。

+ (void)sendAsynchronousRequest:(NSURLRequest *)request
                      queue:(NSOperationQueue *)queue
          completionHandler:(void (^)(NSURLResponse *response,
                                      NSData *data,
                                      NSError *connectionError))handler

您希望的数据值在块中提供。这就是你想要提取NSArray并用它做些什么的地方。

在我目前的项目中,我没有使用synchronousRequest,而是做类似的事情。也许这有助于你。

    NSError *error;
    // Read the given JSON file from the server
    NSData *filedata = [NSData dataWithContentsOfURL:url options:kNilOptions error:&error];

    if (filedata)
    {
        // Read the returned NSData from the server to an NSDictionary object
        // Essentially this is the bookstore in NSDictionary format.
        NSArray *bookStore = [NSJSONSerialization JSONObjectWithData:filedata options:kNilOptions error:&error];

    }