如何在请求正文中设置对象名称以在 Ios 中解析 json

Posted

技术标签:

【中文标题】如何在请求正文中设置对象名称以在 Ios 中解析 json【英文标题】:How to set object name in request body for json parsing in Ios 【发布时间】:2013-12-12 13:39:10 【问题描述】:

我是 JSON 解析的新手,我正在使用以下代码将数据发布到服务器

    NSDictionary *newDatasetInfo = [NSDictionary dictionaryWithObjectsAndKeys:ClassicLevel, @"ClassicLevel",CurrentLevel,@"CurrentLevel",UpdatedDate,@"UpdatedDate",Name,@"Name",UpdatedTime,@"UpdatedTime", nil];

    NSError*error;
    //convert object to data
    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:newDatasetInfo options:kNilOptions error:&error];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:@"http://testURL"]];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];

    [request setHTTPBody:jsonData];

通过使用它,我可以生成以下请求正文


 "Name":"abc",
 "UpdatedDate":"",
 "CurrentLevel":"2",
 "UpdatedTime":"122",
 "ClassicLevel":"1" 

但我必须生成请求正文,例如:


"objTimesheet" : 
    
    "Name":"abc",
    "UpdatedDate":"",
    "CurrentLevel":"2",
    "UpdatedTime":"122",
    "ClassicLevel":"1" 
    

提前致谢。

【问题讨论】:

您好,我必须传递相同的请求,但在请求中传递用户名和密码的值知道吗? @keyurbhalodiya:试试这个..NSDictionary *newDatasetInfo = [NSDictionary dictionaryWithObjectsAndKeys:strUsername , @"usernameKey ",strPassword ,@"passwordKey", nil];..希望对你有帮助。 【参考方案1】:

您正在字典中寻找字典。放弃你已经拥有的:

NSDictionary *newDatasetInfo = [NSDictionary dictionaryWithObjectsAndKeys:ClassicLevel, @"ClassicLevel",CurrentLevel,@"CurrentLevel",UpdatedDate,@"UpdatedDate",Name,@"Name",UpdatedTime,@"UpdatedTime", nil];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:newDatasetInfo, @"objTimesheet", nil];

NSError*error;
//convert object to data
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:&error];

【讨论】:

以上是关于如何在请求正文中设置对象名称以在 Ios 中解析 json的主要内容,如果未能解决你的问题,请参考以下文章

javascript 如何在Express中解析请求的正文?

Moya/Alamofire 请求变量问题

使用 http 端点访问 lambda 中的 HTTP 请求(标头、查询字符串、cookie、正文)对象

当 HTTP 请求返回状态 401 时,如何在 Java 中解析响应正文

如何将 json 列表传递给 Flutter 中的 http 请求(post)正文?

jQuery 在请求正文中发布有效的 json