【问题标题】:How do I add an NSArray of NSDictionaries to a AFJSONRequestSerializer request?如何将 NSDictionaries 的 NSArray 添加到 AFJSONRequestSerializer 请求?
【发布时间】:2016-12-19 12:45:28
【问题描述】:

我编写了一些代码来将 NS(Mutable)Dictionary 放入 NSArray。但是在将字典添加到数组之后,它似乎为每个键值对创建了单独的字典。请参见下面的示例。

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;

【问题讨论】:

  • 取 NSMutableArray 并将 addObject 放入其中,然后将该数组设置为字典
  • 你的代码看起来不错,它给出了预期的输出。
  • 您的代码非常好,兄弟。它可以满足您的期望。
  • 提供你的 xcode 版本
  • 查看您的代码输出 { users = ( { name = John; "user_id" = 123; } ); }

标签: ios objective-c nsarray nsdictionary afjsonrequestoperation


【解决方案1】:

我在我的 x 代码中运行你的代码,得到以下输出:

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

}

这正是您所期望的,我认为您的代码没有任何错误,因此请再次检查,否则,我也会得到错误的答案。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      相关资源
      最近更新 更多