NSJSON序列化问题。发送到 api 的 JSON 对象不正确

Posted

技术标签:

【中文标题】NSJSON序列化问题。发送到 api 的 JSON 对象不正确【英文标题】:NSJSONSerialization issues. Incorrect JSON object sent to api 【发布时间】:2014-11-05 11:19:43 【问题描述】:

在我的 xcode 项目中,我使用 Unirest 库向我的 api 发送带有 json 数据的发布请求:

  NSDictionary *jsonObj = @@"access_token": accessToken;

  UNIHTTPJsonResponse* response = [[UNIRest postEntity:^(UNIBodyRequest* request) 
    [request setUrl:@"http://localhost:9000/auth/facebook/token"];
    [request setHeaders:headers];
    // Converting NSDictionary to JSON:
    [request setBody:[NSJSONSerialization dataWithJSONObject:jsonObj options:0 error:nil]];
  ] asJson];

检查时,jsonObj 的格式正确。

但是在服务器端我看到了这个对象:

  
    '"access_token":"12345678910"': '' 
  

什么时候应该:

    
      "access_token":"12345678910"
    

这里发生了什么?

【问题讨论】:

显然,您正在发送一个 JSON 字符串作为 JSON“对象”中的键。我不熟悉 UNIRest,但我怀疑它正在进行第二次 JSON 序列化。 【参考方案1】:

我怀疑这与 UNIHTTPJsonResponse 上的 asJson 方法有关。

我的猜测是它正在获取正文等的内容......然后将其“转换”为 JSON。

所以,当这已经是 JSON 时,它会再次结束。

【讨论】:

我在没有库的情况下尝试了发布请求,但同样的事情发生了。

以上是关于NSJSON序列化问题。发送到 api 的 JSON 对象不正确的主要内容,如果未能解决你的问题,请参考以下文章

NSJSON序列化到核心数据

NSJSON序列化和表情符号

在swift ios中解析NSJSON序列化中的json时出错

将修改后的数据发送到 DRF API 中的序列化程序

api没有使用alamofire显示序列化的json输出

反序列化从 node.js (azure sdk) 发送的 Azure ServiceBus 队列消息时出错