【问题标题】:Error in converting NSArray to JSON将 NSArray 转换为 JSON 时出错
【发布时间】:2013-09-17 17:04:04
【问题描述】:

我有 NSArray,里面有 NSDictionaries。我需要发布 JSON。所以我尝试使用 NSURLConnection 发出 post 请求,但我得到了一个错误(错误的 url)。 我转换 NSArray 这样的方向:

NSData *dishesData = [NSJSONSerialization dataWithJSONObject:dishes options:NSJSONWritingPrettyPrinted error:&error];
NSString *dishesString = [[NSString alloc] initWithData:dishesData encoding:NSUTF8StringEncoding];

然后通过请求将其粘贴到 NSString。

NSString *requestString = [NSString stringWithFormat:@"%@%@=%@&%@=%@&%@=%@&%@=%@&%@=%@&%@=%@&%@=%@", SERVER_ADDRESS, ACTION, ORDER_ACTION, ORDER_NAME, name, ORDER_EMAIL, email, ORDER_PHONE, phone, ORDER_DELIVERY, delivery, ORDER_ADDRESS, address, ORDER_DISHES, dishesString];

然后我第一次登录:

2013-09-17 20:01:13.926 Eda.by[3088:c07] http://eda.by/api.php?act=order&name=Тимур&email=bernikowich@testemail2.com&phone=+375296802009&delivery=1&address=Тестовый адрес!&dish=[
  {
    "count" : 2,
    "id" : 86
  }
]

如果我尝试发布此内容,我会收到错误“错误网址”。 这就是为什么我尝试通过以下方式对其进行编码:

requestString = [requestString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

之后我得到这样的日志:

http://eda.by/api.php?act=order&name=%D0%A2%D0%B8%D0%BC%D1%83%D1%80&email=bernikowich@testemail2.com&phone=+375296802009&delivery=1&address=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%B0%D0%B4%D1%80%D0%B5%D1%81!&dish=%5B%0A%20%20%7B%0A%20%20%20%20%22count%22%20:%202,%0A%20%20%20%20%22id%22%20:%2086%0A%20%20%7D%0A%5D

发送良好,但数据错误,无法正常工作。

【问题讨论】:

    标签: objective-c json nsarray


    【解决方案1】:

    您可以使用以下代码轻松地将 NSDictionary 转换为 JSON 字符串:

    NSString* jsonString = [jsonDictionary JSONRepresentation];
    

    然后创建一个 NSData 对象:

    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    

    【讨论】:

    • 但我需要转换 NSAArray,而不是 NSDictionary。
    【解决方案2】:

    如果你想“POST”,你需要添加 json 作为请求体。情商:

    [request setHTTPBody:(NSData *)];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 2016-08-05
      • 2012-02-24
      • 2013-05-06
      • 1970-01-01
      相关资源
      最近更新 更多