2012-09-17 32 views
2

如何用NSDataObjective C中创建json对象。我的值是NSData变量。如何在Objective C中使用NSData创建json对象?

+0

你想发送NSData,或者从中获取值,然后从中创建你的JSON,然后发送 –

+0

@VakulSaini: - ys我试过并找到了一个函数NSJSONSerialization。但是当我试图插入NSData到它,我得到了一个错误..你可以请帮我找出一个更好的解决方案.. –

+0

好吧,看看我的答案吧。 – TheTiger

回答

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]; 

您可以在阵列

获取数据

希望这个帮你队友...

:)

+0

是我试图将NSData转换为NSString。但它总是返回nul。也害怕将它转换成bcos它可能会导致数据丢失。 现在NSData变量持有IV,SALT和CIPHERTEXT。我将这三个值连接到一个名为encryptedData的变量。 (NSData * encryptedData;)。现在我想创建一个可以容纳encryptedData的json ..任何帮助? –

3

可以在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 
} 
+0

嗨Moxy,是iPhone开发新手,我很困惑。你可以告诉我的代码做同样的.. –

+0

这行代码应该足以让你的JSON对象。你不明白的是什么?你已经知道你的json是如何格式化的? – Moxy

+0

但是,当打印jsonDictionaryOrArray(NSLog(@“%@”,jsonDictionaryOrArray);)的值时,它显示为nil。你知道为什么吗? –

1
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 
} 

编辑SWIFT

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