在 iOS 中创建 JSON 字符串

Posted

技术标签:

【中文标题】在 iOS 中创建 JSON 字符串【英文标题】:Create JSON string in iOS 【发布时间】:2013-10-20 19:02:35 【问题描述】:

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

我有这些价值观:

"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.";
    ;

我总是遇到同样的错误

谁能告诉我我的实现有什么问题?

【问题讨论】:

您只构建了部分 JSON。字符串,@"\"und\":[\"value\":\"2324\"]" 几乎可以肯定应该编码为 JSON,而不是字符串。请参阅 json.org 以了解 JSON 语法——您要创建的是一个字典,其中一个条目键为“und”。一个条目是一个包含一个元素的数组,一个数组元素是一个字典,键为“值”,值为“2324”。 【参考方案1】:

我想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 中创建 JSON 字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中创建 JSON 字符串

如何从字符串数组在 json 字符串中创建层次结构?

如何在C#中创建JSON字符串

在节点 js 中创建 JSON 数组

在 Swift 中创建 JSON 数组

无法在包含 NULL 值的 SQL 表中创建 JSON 格式的列