【问题标题】:iOS send JSON array in POSTiOS 在 POST 中发送 JSON 数组
【发布时间】:2014-09-24 10:13:04
【问题描述】:

我想创建一个如下结构的 JSON 数组:

"Create Account":{ 
"RegistryNumber":"",
"People":[{
"PeopleId":"",
"email":"",
"pass":"",
}]
}

我正在使用以下代码来做到这一点:

NSDictionary *content0 = [NSDictionary dictionaryWithObjectsAndKeys:
                              @"PeopleId", @"0",
                              @"email", @"email",
                              @"pass", @"pass",nil];

  NSArray *peopledetails = [NSArray arrayWithObjects:content0,nil];
NSMutableDictionary *peopleDict = [[NSMutableDictionary alloc] init]; 
[peopleDict setObject:@"content0" forKey:@"People"];
  
NSMutableDictionary *details = [[NSMutableDictionary alloc] init];  
[details setObject:@"RegistryNumber" forKey:@"RegistryNumber"];
[details setObject:@"peopleDict" forKey:@"People"];
NSMutableDictionary *MainDict = [[NSMutableDictionary alloc] init]; 
[MainDict setObject:@"details" forKey:@"Create Account"];

但这给了我来自服务器的错误。当数组不在图片中时,我还有其他可以正常工作的 API。

【问题讨论】:

    标签: ios json nsarray


    【解决方案1】:
    - (void)simpleJsonParsing
    {
        //  URL request with server
        NSHTTPURLResponse *response = nil;
        NSString *jsonUrlString = [NSString stringWithFormat:@"URL"];
        NSURL *url = [NSURL URLWithString:[jsonUrlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
        //-- Get request and response though URL
        NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
        NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
    
        //-- JSON Parsing
        NSMutableArray *result = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"Result = %@",result);
    
        for (NSMutableDictionary *dic in result)
        {
             NSString *string = dic[@"Create Account"];
            if (string)
            {
                 NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
                 dic[@"Create Account"] = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
            }
            else
            {
                 NSLog(@"Error in response");
            }
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      改变

      [peopleDict setObject:@"content0" forKey:@"People"];
      

      [peopleDict setObject:peopledetails forKey:@"People"];
      

      删除对象的所有@""。

      @"details" 是一个字符串,details 是一个对象

      或者这里是简单的方法

        NSDictionary *dict=@{
                               @"Create Account": @{
                                       @"RegistryNumber": @"",
                                       @"People": @[
                                               @{
                                                   @"PeopleId": @"",
                                                   @"Email": @"",
                                                   @"pass":@""
                                                   }
                                               ]
                                       }
                               };
      

      【讨论】:

        【解决方案3】:

        我认为你有错误的结构

        NSDictionary *content0 = [NSDictionary dictionaryWithObjectsAndKeys:
                                      @"PeopleId", @"0",
                                      @"email", @"email",
                                      @"pass", @"pass",nil];
        
        
        postDict = @{@"Create Account":@{@"RegistryNumber":"","People":content0}}
        

        现在将其转换为 jason 并发送到您的服务器

        【讨论】:

          猜你喜欢
          • 2023-03-17
          • 2018-09-28
          • 2014-04-06
          • 2016-09-29
          • 2016-05-11
          • 2013-02-27
          • 1970-01-01
          • 2014-10-07
          • 2013-08-22
          相关资源
          最近更新 更多