python解析json数据遇到点事坑_JSON解析中遇到的坑
最近做加解密遇到⼀个很“奇葩的问题”,解析服务端加密后的字符串 序列化 时⼀直报错 "json解析失败:Error
Domain=NSCocoaErrorDomain Code=3840 "Garbage at end." UserInfo={NSDebugDescription=Garbage at end.}"
既然出现问题就开始原因,根据错误分析原因,⼤概是 JSON 格式字符串有问题,搜了很多答案,被误导了。
本⾝使⽤ AES 解密后打印出来的 JSON 字符串是
{"UserId":"D6BA8FE3-9BBB-40F2-BC04-
2CC5BCF2B353","Code":"","Account":"","RealName":"Robin","Spell":null,"Gender":"男","Mobile":"","Telephone":null,"Email":null,"WeChat 60ef-405c-87ba-af47049e3f48","CompanyName":"","DepartmentId":"52b73532-56ff-4db0-810e-
9a915a5decf5","DepartmentName":"研发部","PostName":"","Enabled":"","Remark":null}
使⽤ JSON 格式化也没有任何问题,但是使⽤下⾯系统⾃带⽅法⼀直转换失败:dos命令手册
软考中级信息系统管理工程师- (id)dictionaryWithJsonString:(NSString *)jsonString {
if (jsonString == nil) {
return nil;
python解析json文件}
易语言免狗工具NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
id dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err) {
CSLog(@"json解析失败:%@",err);
return nil;
}
CSLog(@"decryptResponse = %@", dic);
return dic;
}
报错信息是说 JSON 后⾯有垃圾后缀。跟服务端同事沟通,他们⼀⼝咬定数据没问题,让客户端解决。
推测⼏种可能性:
刚开始怀疑是编码问题,但是编码⽅式⼀致,排除;
后来怀疑是 服务端 设置了 "\0" 或者转义问题,但是对⽅不配合。。。只能这边进⾏转换,试了以下⼏种⽅式:
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\r\n" withString:@""];
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\t" withString:@""];
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\" withString:@""];
后来选择把 字符串中 的 "null" 转换以下:
jsonString = [jsonString stringByReplacingOccurrencesOfString:@":null"withString:@":"""];
后来解析还是失败。。。
后来调试时发现:
后⾯"}"多了 "\0\0\0\0\0",所以解析失败:正常的如下:
⽐对 AES 的加密模式,填充,数据块,密码,向量,输出,字符集等参数,果然是数据 填充 枚举两端不⼀致导致的,修改后,解析正常。
坑总结:控制台打印出来的数据⾃动进⾏了转化,看不到完整的错误数据,不⽅便定位问题。
dotnet ⼿动解决 json 解析中不合法字符串
如果使⽤ Newtonsoft Json 解析字符串,字符串⾥⾯有不清真的格式,那么默认的解析将会炸掉.如果想要⾃⼰解决字符串中的不清真格式,可以使⽤传⼊ JsonSerializerSettings ...
关于json解析中 解析多重json对象
JSONObject rst = {"AIS-RST":"AIS-00000001","AIS-STATUS":"AIS-0000 ...
replace sth with sth
iOS json解析中包含“\n”等解析出错
⽂题算是解决了,把特殊字符替换⼀下:-(NSString *)JSONString:(NSString *)aString {    NSMutableString *s = [NSMutableSt ...
超详细JSON解析步骤
JSON简介 JAVAScript Object Notation是⼀种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决⽅案(有点类似于正则表达式 ,获得了 ...
IOS中Json解析的四种⽅法
python 中的json解析库
当⼀个json 数据很⼤的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步⽐较了⼀下, 对于loads来讲simplejson ...
Json--Android中数据⽂件解析(Json解析--从服务器端获取数据并且解析,显⽰在客户端上⾯)
前⾯学习过了使⽤SAX解析XML数据(点击进⼊:SAX解析XML数据),今天学习Json解析: ⾸先说⼀下Json数据的最基本的特点,Json数据是⼀系列的键值对的集合,和XML数据来⽐,Json数据 ...
java中转换json⽅式(JSONArray,JSONObject),json解析
package com.yunos.ller.web; import java.util.ArrayList; import java.util.Has ...
我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 ⾸先,需要解析的Json数据类似于下⾯的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...mockplus公司
随机推荐
动态调⽤WebService
WebService内容 using Microsoft.CSharp;using System;using System.CodeDom;using System.CodeDom.Compiler; ...
js弹出框,禁刷新

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。