2013-03-20 41 views
-1

我们如何将NSDictionary转换为JSON数据对象?我想发送一个JSON数据到我的服务器。我使用下面的代码,但面对一个问题,当涉及NSDictionary包含数组或进一步NSDictionary在它。这适用于简单的键值对。解析NSDictionay到JSON NSData中的问题

问题:它在下面的行上失败并设置错误对象。这工作正常,如果我从源myData字典中删除数组和字典。

NSData *aPostBodyData = [NSJSONSerialization dataWithJSONObject:myData options:0 error:&error]; 

Where myData looks like: 

{ 
    URI = "www.google.com"; 
    addOnTestString = "4,3,"; 
    status =  (
      "In Progress", 
      Submitted, 
      Delivered 
     ); 
data = 

{ 
    URI = "www.test.com"; 
    testString = "43"; 
    status =  (
      "In Progress", 
      Submitted, 
      Delivered 
     ); 
} 
} 

错误跟踪:

enter image description here

+0

我已更新我的帖子。我的错误对象正在设置,它在解析myData对象失败。 – Abhinav 2013-03-20 18:42:49

+0

错误对象的内容是什么?请NSLog它。 – 2013-03-20 18:44:40

+0

此处添加了错误跟踪。无法在控制台上登录。 (lldb)po错误 $ 1 = 0x0000000101053000 [没有可用的Objective-C说明] – Abhinav 2013-03-20 18:52:43

回答

1

确定我只写了包括您的情况示例代码和它工作得很好。

NSArray * [email protected][@"a",@"b"]; 

     NSMutableDictionary * dict=[[NSMutableDictionary alloc] initWithObjects:@[@"a",myarray] forKeys:@[@"str",@"arr" ]]; 




     NSData * js=[NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil]; 


     NSString * jsString=[[NSString alloc] initWithData:js encoding:NSUTF8StringEncoding]; 


     NSLog(@"%@",jsString); 

发生错误的可能原因可能是;

您的myData不在NSDictionary或NSArray类型中。

或者在向字典中添加数组时缺少一个点。

+0

是的。我的输入字典被搞乱了。它现在有效。 – Abhinav 2013-03-20 19:22:20

+0

哦,对你有好处:)。 – meth 2013-03-20 19:22:53