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

看到我的编辑,我发现了一些东西。 –