亚州城ca88手机版_亚洲城官方网站|www.yzc889.com

热门关键词: 亚州城ca88手机版,亚洲城官方网站,www.yzc889.com

关于SQL Server 20一七中选拔json传参时分析碰到的多

2019-06-07 21:31栏目:数据库
TAG:

开辟新的类别,DB部分行使了SQL Server从贰零一肆版初叶自带的Json深入分析方法。

Json 网络传送剖析非常,json传递分析

在品种中碰到1个bug,A项目请求B项目,获取到的Json不能够深入分析,B项目封装的Json,在类型里面能够健康分析,
难题并不是Json 深入分析的一无所长,而是实体Bean中有数组类型的字段;化解办法就是对封装类进行拆分简化,
传递七个不带有数组,不带有集结的一般实体,传递解析就不会有标题。
现实原因并未有弄领会,测试中品尝给数组类型的字段赋值后再行深入分析,本地深入分析也是有特出。

网络传送分析分外,json传递分析在类型中遇见三个bug,A项目请求B项目,获取到的Json不可能分析,B项目封装的Json,在品种里面能够不荒谬分析...

在iOS开辟进度中有的时候供给与服务器实行数据通信,Json正是壹种常用的迅猛简明的数目格式。
主题材料现象
但是多少个项目下来一向碰着二个坑爹的难题,程序在得到有些数据之后莫名崩溃。其实很已经发掘了原因:由于服务器的数据库中多少字段为空,然后以Json格局再次回到给客户端时就可以晤世那样的多寡:

自家的博客原来的小说地址

用了快五个月,在私有项目,以及公司部分品种上行使了,暂且还没遇上海高校的难点,和总体性难题。

"somevalue":null

在iOS开荒进度中时时需求与服务器实行数据通信,Json就是1种常用的长足简明的多少格式。

前几天在分析Json的千家万户参数蒙受了点小意思,在此记录一下:

经过JsonKit 那么些第二方库深入分析出来的多少就成了

标题现象

可是多少个门类下来一直境遇三个坑爹的主题素材,程序在赢得有些数据今后莫名崩溃。其实很已经发掘了原由:由于服务器的数据库中稍加字段为空,然后以Json方式重回给客户端时就能现身这么的数目:

"somevalue":null

通过Json基特 这么些第1方库分析出来的多寡就成了

somevalue = "";

那几个数据类型不是nil 也不是 String。 分析成对象之后,假使一直向那些目的发送新闻(eg:length,count 等等)就能够平昔崩溃。提醒错误为:

-[NSNull length]: unrecognized selector sent to instance 0x388a4a70

传参内容如下:

somevalue = "<null>";

减轻格局

实则一直从未找到完美的消除办法,坑了自身很久。

一、最开头的缓和格局就是为着敷衍当前蒙受的垮台,看看哪些字段恐怕为空,那么就对该字段使用前举办判别,通过崩溃时的百无一用提醒能够见见,那样的字段分析成的指标是 NSNull 类型的,所以能够直接推断是还是不是此类型:

if (![isKindOfClass:[NSNull class]])
{
    // TODO
} 

因为字段实在太多,就找三个补2个。

二、后来想透彻消除那难题,就计划从数据源入手,其实应该能够用正则表明式相配这么些null ,然后开展轮换,奈何正则是本身的硬伤啊。于是就相出了一个山寨方法:字符串相配。在收获到服务器重回的Json时,重回结果时string对象,于是就先替换 null 为 为空字符””,然后再深入分析。

json = [jsonStr  stringByReplacingOccurrencesOfString:@":null"withString:@":"""];

本条格局自然很见效,然而本人这里的服务器再次回到极不简洁,各类废品数据(不嘲弄那了)。。。反正那样会促成json不只怕深入分析了。

三、最后未有艺术,只可以在条分缕析的时候下手,把是NSNull 类型的值替换来nil。 一般就写个tool方法,然后分析时调用。不过嫌太费事,就想弄写个宏,通过搜寻欢悦的意识宏也是足以有重返值的,结果如下:

#define VerifyValue(value)
({id tmp;
if ([value isKindOfClass:[NSNull class]])
tmp = nil;
else
tmp = value;
tmp;
})

宏里的末段一句语句就是再次来到值。然后在分析数据时调用宏:

contact.contactPhone = VerifyValue(contactDic[@"send_ContactPhone"]);

4、参考
http://www.zlcode.com/2016/03/10/ios-json-null-solve/

5、若是您利用AFNetwork 那一个库做网络请求的话,能够用于下代码,自动帮你去掉那几个讨厌的空值

self.removesKeysWithNullValues = YES;

六、终极方案
百川归海找到了一劳永逸的方案,牛逼的老外写了三个Category,叫做NullSafe ,在运营时操作,把这些讨厌的空值置为nil,而nil是平安的,能够向nil对象发送任何message而不会奔溃。这些category使用起来极其便宜,只要参预到了工程中就能够了,你任何的哪些都休想做,对,就是这般轻松。详细的请去Github上查看;
https://github.com/nicklockwood/NullSafe

版权声明:本文由亚州城ca88手机版_亚洲城官方网站|www.yzc889.com发布于数据库,转载请注明出处:关于SQL Server 20一七中选拔json传参时分析碰到的多