如何将Nsdictionalies的NSarray添加到AfjSonreQuestSerializer的请求中



我编写了一些代码,将NS(可变)字典放入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时,我确实会获得预期的输出。但是,当我将其发送到后端时,它就被搞砸了。

我创建了新的nsdictionalies(作为对象文字):

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;

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

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

}

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

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

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

相关内容

  • 没有找到相关文章

最新更新