ios - 在 iOS 中创建 JSON 字符串

标签 ios json web-services http-post

如何在 iOS 中为 HTTP 请求创建 JSON 字符串

我有这些值(value)观:

{"name":"customer6","pass":"customer6",  "mail":"customer6@xy.com","user_roles":"5", "field_login_pin_value":{"und":[{"value":"2324"}]} }

那么如何从这些数据中生成 JSON 字符串呢?

这是我的代码:
NSArray *keys = [NSArray arrayWithObjects:@"name",@"pass",@"mail",@"user_roles",@"field_login_pin_value", nil];

NSArray *objects = [NSArray arrayWithObjects:@"customer6",@"customer6",@"customer6@xy.com",@"5",@"{\"und\":[{\"value\":\"2324\"}]", nil];

NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

NSString *jsonString = [jsonDictionary JSONRepresentation];


NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://xxxxxxxx/register.json"]];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:jsonString forHTTPHeaderField:@"json"];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:jsonData];

nsconnection= [[NSURLConnection alloc] initWithRequest:request delegate:self];

当我点击网络服务请求时,我得到以下响应:
 "form_errors" =     {
        "field_login_pin_value][und][0][value" = "PIN value field is required.";
    };
}

我总是遇到同样的错误

谁能让我知道我的实现有什么问题?

最佳答案

我想 JSONRepresentation正在格式化 "{\"und\":[{\"value\":\"2324\"}]"它是文字字符串,而不是字典内数组内字典内的值。您应该制作整个 dict-array-dict 结构。如果您使用数组和字典文字,这一切都会变得更容易:

NSDictionary *jsonDictionary = @{
    @"name" : @"customer6",
    @"pass" : @"customer6",
    @"mail" : @"customer6@xy.com",

    @"user_roles" : @"5",

    @"field_login_pin_value" : @{
        @"und":@[
            @{
                @"value" : @"2324"
            }
        ]
    }
};

当然,您可以将 pin_value 值合并为一行,这只是为了清楚起见。

关于ios - 在 iOS 中创建 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481538/

相关文章:

ios - 将 xcode 升级到 10.2 版后面临 AFNetworking 错误

javascript - JSON HTML文件链接

c# - 如何使用 JSONConvert 将我的变量 Result 转换为对象?

ios - 自定义UIButton命中和UIImagePickerController按钮背景

ios - - (void)scrollViewDidScroll :(UIScrollView *)scrollView too slow in iOS 8

ios - 使 UILabel 自动将字体大小调整为屏幕宽度,而不是文本长度

java - 带有 maven 和 tomcat 的 AXIS2 Web 服务,部署为 aar

php - 在PHP中运行C++脚本

web-services - 什么是 SOAP 非 wsdl 模式选项中的 uri

java - 返回创建方法的结果和201状态码