1

我寫了一些代碼將一個NS(可變)字典放入一個NSArray中。但是在將字典添加到數組後,它似乎爲每個鍵 - 值對創建單獨的字典。見下面的例子。如何將NSArray的NSDrayaries添加到AFJSONRequestSerializer請求中?

NSMutableDictionary *info = [[NSMutableDictionary alloc] init]; 
[info setObject:@"123" forKey:@"user_id"]; 
[info setObject:@"John" forKey:@"name"]; 
NSArray *array = [NSArray arrayWithObject:info]; 

NSMutableDictionary *htmlParams = [[NSMutableDictionary alloc] init]; 
[htmlParams setObject:array forKey:@"users"]; 

預期輸出:

{ 
    "users": [ 
     { 
      "user_id": 123, 
      "name": "John 
     } 
    ] 

} 

我得到什麼:

{ 
    "users": [ 
     { 
      "user_id": 123, 
     }, { 
      "name": "John 
     } 
    ] 

} 

我在做什麼錯?

感謝您的幫助!

編輯* 我試了一些更多的東西,似乎我認爲是什麼問題,但它仍然對我來說很奇怪。

有點背景:當我登錄NSDictionary時,我確實得到了預期的輸出。但是當我將它發送到我的後端時,它會被搞砸。

我創建新NSDictionaries(如對象常量):

1:

NSDictionary *info = @{ 
    @[ 
     @{ 
      @"firstname": @"John", 
      @"lastname": @"Doe", 
     }, 
     @{ 
      @"firstname": @"Jane", 
      @"lastname": @"Da", 
     }, 
    ] 
}; 

2:

NSDictionary *info = @{ 
     @0: @{ 
       @"firstname": @"John", 
       @"lastname": @"Doe", 
     }, 
     @1: @{ 
       @"firstname": @"Jane", 
       @"lastname": @"Da", 
     }, 
}; 

1:出錯時,所述陣列中的每一行被輸出爲在我的後端不同的字典。 2:表現如預期。

我不知道是什麼原因導致了這個問題,但我確定它不是我的包(AFNetworking),也不是我的後端(Symfony PHP)。

編輯*

看來我需要的JSON序列添加到我的請求。

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
manager.requestSerializer = serializer; 
+0

採取的NSMutableArray和ADDOBJECT進去然後設置數組字典 –

+0

您的代碼看起來不錯,這是給預期輸出。 –

+0

你的代碼非常好。它給你所期望的。 – Pushkraj

回答

0

似乎我需要將JSON序列化程序添加到我的請求中。

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
manager.requestSerializer = serializer; 
0

我運行你的代碼在我的X-代碼我得到以下的輸出:

{ 
users =  (
      { 
     name = John; 
     "user_id" = 123; 
    } 
); 

}

而這正是找你期待,我不認爲有任何在你的代碼錯誤,所以再次檢查,否則,我也得到了錯誤的答案。

+0

看到我的編輯,我發現了一些東西。 –

相關問題