我正在尝试创建json数据以通过HTTP POST请求发送到服务器。 server只接受特定格式的JSON,否则会返回错误。我可以成功创建JSON文件并将其上传到服务器,但是我收到以下错误,因为我没有错误地格式化我的JSON:
JSON Error Message: {
code = "-2";
message = "Validation error: {\"message\":{\"to\":[\"Please enter an array\"]}}";
name = ValidationError;
status = error;
}
正如您所看到的,服务器需要一个带有值和键数组的复杂JSON格式,但我不知道该怎么做。下面是我当前创建JSON数据的代码:
//Create Array With TO Values
NSDictionary *toField = @{@"email" : emailField.text};
//Create Dictionary Values
NSDictionary *messageContent = @{@"subject" : @"APPNAME Registration Complete", @"from_email" : @"email@domain.com", @"to" : toField};
NSDictionary *mandrillValues = @{@"key" : @"APPKEY",
@"redirect_url" : @"PRIVATE-URL",
@"template_name" : @"app-registration",
@"template_content" : [NSNull null],
@"message" : messageContent
};
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:mandrillValues options:NSJSONWritingPrettyPrinted error:nil];
根据服务器,我需要一个包含键和值的数组,类似于nsdictionary。 但是,当我使用NSArray时,我无法添加值/键。关于如何进行此操作的任何想法?以下是服务器将接受的example of the JSON format,我是否正确地遵循此格式?如果没有,我需要更改什么才能匹配格式?
{
"key": "example key",
"template_name": "example template_name",
"template_content": [
{
"name": "example name",
"content": "example content"
}
],
"message": {
"text": "example text",
"subject": "example subject",
"from_email": "message.from_email@example.com",
"from_name": "example from_name",
"to": [
{
"email": "example email",
"name": "example name"
}
],
}}
答案 0 :(得分:2)
看起来像"到"字段需要一个数组。除非变量toField
是包含所述键和值的字典的NSArray,否则您将获得与您想要的JSON不完全相同的JSON。
我建议输出传出JSON的描述,以确切了解存在差异的位置。
<强>更新强> 我看到了你问题的补充 -
NSDictionary *toField = @{@"email" : emailField.text};
不创建数组。尝试:
NSArray *toField = @[@{@"email" : emailField.text}];