4

如何使用NSDatain创建 json 对象Objective C。我在NSData变量中有值。

4

3 回答 3

6

您可以在 iOS 5 中像这样使用它(如果您确定您的 json 结构,您可以直接使用NSArrayNSDictionary进行强制转换)

NSError *jsonError;
id jsonDictionaryOrArray = [NSJSONSerialization JSONObjectWithData:myData options:NULL error:&jsonError];
if(jsonError) {
    // check the error description
    NSLog(@"json error : %@", [jsonError localizedDescription]);
} else {
    // use the jsonDictionaryOrArray
}
于 2012-09-17T10:28:01.917 回答
2
NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"youur link"]];
id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
if([jsonObjects isKindOfClass:[NSArray class]]){
    //Is array
}else if([jsonObjects isKindOfClass:[NSDictionary class]]){
    //is dictionary
}else{
    //is something else
}

为斯威夫特编辑

do {
        if let jsonArray = try JSONSerialization.jsonObject(with: data, options : .allowFragments) as? [Dictionary<String,Any>] {

        } else {
            print("bad json")
        }
    } catch let error as NSError {
        print(error)
    }
于 2012-09-17T10:39:17.200 回答
2

如果您在 NSData 对象中有一个值,那么您可以将其转换为 NSString 变量,如下所示

NSString *response = [[NSString alloc] initWithData:receivedData
                                                encoding:NSUTF8StringEncoding];

已编辑...

我不确定你想要什么,但我给你字符串中的 json 数组,如下所示..

NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    [responseData release];

    NSError *error;
    SBJSON *json = [[SBJSON new] autorelease];
    NSArray *arrData = [json objectWithString:responseString error:&error];
    [responseString release];

你可以在数组中获取数据

希望这对你有帮助...

:)

于 2012-09-17T10:26:30.513 回答