IOS 原生解析JSON 问题
服务器----WebService
返回的是JSON数据 IOS解析报错:
Error Domain=NSCocoaErrorDomain Code=3840 "Unable to convert data to string around character 56." UserInfo={NSDebugDescription=Unable to convert data to string around character 56.}
Code = 3840 错误
通过我将JSON写成文档数据本地解析成功,但在IOS请求解析一直报这个错误
两次结果不同,于是将请求来的JSON数据data打印出来,发现网路请求的JSON数据字节流和本地数据解析打印的data字节流不一样(注:我TMD一个一个对比出来的,前些数据一样,后面就不同了。你也对对看看你自己的是不是也是这个错误)
原因分析:WebService返回的是GB2312编码数据。IOS解析要转换为UTF8编码格式的数据!
解决方案:将GB2312格式的数据转换为UTF8的!
转换代码:
-(NSString *) gb2312toutf8:(NSData *) data{
NSStringEncoding enc =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *retStr = [[NSString alloc] initWithData:data encoding:enc];
return retStr;
} //现将编码格式转换为NSString
调用上面的方法:
NSString *dataStr = [self gb2312toutf8:data];
再将dataStr转换为UTF8编码的数据
NSdata *data = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
好了,可以解析data数据了
IOS 原生解析JSON 问题的更多相关文章
- IOS数据解析JSON
//非原创 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSO ...
- Delphi XE6 原生解析json
Delphi XE5带了system.json单元,原生提供了json支持类.下面是解析json用法说明: 最简单的JSON大致像这样 { "date":"周二(今天, ...
- ios中解析json对象基类
这个是对上面一篇写的一个解析json对象的基类 @interface BaseObjectFromJson : NSObject + (id) objectWithDict:(NSDictionary ...
- 在ios中解析json数据
刚刚下午那会 弄了个 解析 xml demo的小例子,本想着json也挺复杂 弄还是 不弄,但是简单的看了下 发现挺简单 考虑了很久,还是写上来吧,毕竟json用得太多了,而且算是自己的积累吧,毕竟 ...
- iOS中解析json多种方法
我感觉JSON解析,重要的是JSON解析之后对结果的处理JSON解析后是个dictionary,但是字典中有可能包含字典和数组,数组中还可以包含字典.向客户端请求的返回数据解析下面就简单介绍一下JSO ...
- Android原生生成JSON与解析JSON
JSON数据是一种轻量级的数据交换格式,在Android中通常应用于client与server交互之间的传输数据.像如今在网上有非常多解析JSON数据的jar包,可是归根究竟用的都是Android原生 ...
- iOS网络-02-数据解析(JSON与XML)
数据交互格式 服务器返回给用户的数据,通常是以下两种方式: JSON XML JSON 一种轻量级的数据数据格式,体积比XML小,是服务器返回给移动端通常采用的格式 用使用JSON文件中的数据,需要对 ...
- iOS开发-简单解析JSON数据
什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {“nam ...
- IOS 解析Json数据(NSJSONSerialization)
● 什么是JSON ● JSON是一种轻量级的数据格式,一般用于数据交互 ● 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除 外) ● JSON的格式很像OC中的字典和数组 ...
随机推荐
- getClass 与getSimpleName
//首先定义一个借口 package com.test; public interface Fruit { } //定义一个实现类 package com.test; public class App ...
- DataGrid( 数据表格) 组件[5]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- js实现数字分页
///js数字分页 返回数组function page(pageCount, sideNum, pageNum) { //其实页 var startNum = 0; //结束页 ...
- 网页HTML1
表格表单 表格, <tabale> -------表格 <tr> --------------行 <td> -- ...
- No suitable authentication method found to complete authentication (publickey,keyboard-interactive).
string command = Command.Text; StringBuilder result = new StringBuilder(); try { var connectionInfo ...
- winform中获取Properties窗口的值.
我写这个工具,主要是多次在将自己的代码和别人代码做对比时,不想繁琐地用眼看他设置的和自己设置的哪里不一样. using System; using System.Collections.Generic ...
- Canvas--2
Canvas2(关键词:setLineDash .rect .strokeRect .clearRect .arc.sin .strokeText ) 绘制其他样式: lineCap 结束端点的设 ...
- [Leetcode][015] 3Sum (Java)
题目在这里: https://leetcode.com/problems/3sum/ [标签] Array; Two Pointers [个人分析] 老实交待,这个题卡半天,第一次做不会,抄别人的.过 ...
- Ubuntu下安装搜狗拼音输入法
Ubuntu默认输入法是ibus输入法,其实用着也可以了,但是说句实话在某些情况下真的不怎么智能.习惯了搜狗所以,查阅资料测试成功后整理如下, 1.安装搜狗拼音 sudo apt-add-reposi ...
- CFLAGS/CPPFLAGS/CXXFLAGS in Makefile介绍
先来看一张关于Makefile中的常见预定义变量. CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项.这两个变量实际上涵盖了编译和汇编两个步骤.大多数程序和库 ...