2013-03-20 46 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