美文网首页
iOS 解析 jsonp 格式数据

iOS 解析 jsonp 格式数据

作者: jing37 | 来源:发表于2018-03-06 23:33 被阅读411次

今天业务中遇到了个关于网络返回数据 jsonp 格式解析的问题,记录一下。

遇到问题

一般情况下我们网络请求返回的数据都是 json 格式

{
   "result":[
        {
            "Name": "Bob",
            "Age": 32,
        },
        {
            "Name": "John",
            "Age": 20,
        },
        {
            "Name": "Henry",
            "Age": 45,
        }
    ],
   "query":"hello"
}

今天做业务遇到一个 jsonp 的格式,用抓包工具抓取的数据结果为以下这个样子, 外面多了个函数包裹。

  callback({
   "result":[
        {
            "Name": "Bob",
            "Age": 32,
        },
        {
            "Name": "John",
            "Age": 20,
        },
        {
            "Name": "Henry",
            "Age": 45,
        }
    ],
   "query":"hello"
})

在用 AFNetwording 得到返回数据后,问题来了直接打印返回数据 responseObject,显示是一串编码。


137D6B32-9846-4312-B489-6E7372325661.png

解决问题

刚开始以为是 UTF8 编码,就用了以下方法进行编码转化,结果返回的字符串仍为空,网上搜索了一下, 在 UTF-8的字符中混进了其他编码格式的字符,这样NSData转NSString的时候,就是返回nil

NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

具体的解决 UTF-8 字符掺杂其他编码格式的过程可以参看这篇文章, 回到问题上来,我按照文章的方法处理之后的结果如图:

1E6B6DFFCCAF738B8071466DE8B0041A.png

任然没有解决问题,之后在浏览器查阅返回结果,发现返回数据是GBK 编码,并非 UTF-8编码,按照以下方法就可以得到正确的结果了

unsigned long encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *result = [[NSString alloc] initWithData:responseObject encoding:encode];

绕了一大圈才定位到问题,记录备用。

相关文章

  • iOS 解析 jsonp 格式数据

    今天业务中遇到了个关于网络返回数据 jsonp 格式解析的问题,记录一下。 遇到问题 一般情况下我们网络请求返回的...

  • 05、网络解析

    解析:从事先规定好的格式中提取数据iOS开发常见的解析:XML解析,JSON解析 XML解析 XMl事例: XML...

  • Ajax请求跨域问题

    遇到ajax请求跨域问题,解决方式,改dataType为jsonp json和jsonp返回数据格式json格式 ...

  • 2018-06-27

    JSONP 应用 服务端JSONP格式数据 假设客户期望返回JSON数据:["customername1","cu...

  • Python_优雅的解析jsonp格式为json

    前端同学一般会利用jsonp实现跨域操作,所以会有一些接口返回数据为jsonp格式,这时候就需要解析一下了 代码实...

  • iOS开发如何 NSData转NSString?

    『导言』 在iOS开发解析数据时候,服务器返回数据为二进制数据NSData格式,这个时候如何将NSData格式的数...

  • IOS开发——网络篇&数据解析

    关于IOS开发,数据解析的方法有两种:JSON和XML。 一、JSON解析 :从事先规定好的格式串中提取数据 ①、...

  • 五分钟学会Jsonp,太简单了

    1 什么是Jsonp? JSONP(JSON with Padding)是数据格式JSON的一种“使用模式”,可以...

  • iOS9和iOS10推送区别

    收到消息数据格式区别 要根据具体数据格式进行解析,以适配iOS10+。 收到远程推送消息几种情况处理 前台接收消息...

  • iOS进阶第四天(xml解析与json解析)

    解析的概念 解析:从事先规定好的格式中提取数据。 解析的前提:提前约定好格式,数据提供方按照格式提供数据,数据获取...

网友评论

      本文标题:iOS 解析 jsonp 格式数据

      本文链接:https://www.haomeiwen.com/subject/dwkdfftx.html