去除後臺返回資料中的null
後臺返回的資料格式由過去的json與xml並存的時代,變成了現在的以json為主,xml幾乎不存在的年代,json是每一個移動端程式猿每次與介面打交道都會遇到的資料格式,在這個過程中好的介面返回格式固然很好,但是也不能排除一些特例的情況,如介面欄位中存在null的情況;
例子
{ "userName": null,
"userImage":null,
"token":null}
如這樣的返回資料,一定讓開發者頭疼,這個時候,它從嚴格意義上來講是一個正確的資料段,但卻不是我們想要的,我們可以通過轉換的方式來進行解決將其中的null轉換成空
如果只是簡單的json格式,不包含複雜的陣列,字典。可以通過以下方法進行轉化(已驗證有效性)
- (NSDictionary*)transforeNullValueInSimpleDictionaryToBlankString:(id)originJson{
// 判斷originJson是不是一個有效的字串
if (![NSJSONSerialization isValidJSONObject:originJson]) {
return nil;
}
NSDictionary *originDic = (NSDictionary*)originJson;
NSMutableDictionary *translatedDic = [NSMutableDictionary dictionary];
[originDic enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:[NSNull class]]) {
[translatedDic setObject:@"" forKey:key];
}else{
[translatedDic setObject:obj forKey:key];
}
return translatedDic;
}
如果包含複雜的格式,如欄位包含陣列或者字典,就可以採取下面的進行修復(沒有測試,可能需要修改,僅提供參考)
- (NSDictionary*)transforeNullValueInDictionaryToBlankString:(id)originJson{
// 判斷originJson是不是一個有效的字串
if (![NSJSONSerialization isValidJSONObject:originJson]) {
return nil;
}
NSDictionary *originDic = (NSDictionary*)originJson;
NSMutableDictionary *translatedDic = [NSMutableDictionary dictionary];
[originDic enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
BOOL isNull = NO;
BOOL isArray = NO;
BOOL isDic = NO;
if ([obj isKindOfClass:[NSNull class]]) {
[translatedDic setObject:@"" forKey:key];
isNull = YES;
}
if ([obj isKindOfClass:[NSArray class]]) {
NSMutableArray *tempArray = [NSMutableArray array];
for (id __strong content in obj) {
if ([content isKindOfClass:[NSNull class]]) {
[tempArray addObject:@""];
}
if ([content isKindOfClass:[NSArray class]]) {
[tempArray addObject: [self transformNullValueInArrayToBlankString:content]];
}
}
[translatedDic setObject:tempArray forKey:key];
isArray = YES;
}
if ([obj isKindOfClass:[NSDictionary class]]) {
NSDictionary *tempDic;
tempDic = [self transforeNullValueInDictionaryToBlankString:obj];
isDic = YES;
[translatedDic setObject:tempDic forKey:key];
}
if (isNull || isArray || isDic) {
}else{
[translatedDic setObject:obj forKey:key];
}
}];
return translatedDic;
}
- (NSArray*)transformNullValueInArrayToBlankString:(NSArray*)originArray{
NSMutableArray *tempArray = [NSMutableArray array];
for (id __strong content in originArray) {
if ([content isKindOfClass:[NSNull class]]) {
[tempArray addObject:@""];
}
if ([content isKindOfClass:[NSDictionary class]]) {
[tempArray addObject:[self transforeNullValueInDictionaryToBlankString:content]];
}
if ([content isKindOfClass: [NSArray class]]) {
[tempArray addObject:[self transformNullValueInArrayToBlankString:content]];
}
}
return (NSArray*)tempArray;
}
相關文章
- 去除資料中的空格
- js前臺如何使用後臺返回的資料JS
- pandas小筆記——去除資料中的NaN值筆記NaN
- 去除陣列中的 null 值陣列Null
- 資料中臺
- 全國首個資料中臺後設資料標準
- 使用 express 模擬後臺介面返回資料Express
- 那些年遇到的後臺返回的奇葩json資料JSON
- 資料中臺即服務——資料中臺的四大支柱
- 走好資料中臺最後一公里,為什麼說資料服務 API 是資料中臺的標配?API
- 資料中臺:宜信敏捷資料中臺建設實踐敏捷
- 資料中臺是什麼意思?如何建設資料中臺?
- 【資料中臺商業化】資料中臺微前端實踐前端
- PHP 去除 bom 頭,JSON_decode () 返回 NULL,PHP 無法對字串做處理PHPJSONNull字串
- 前端資料與後臺分離,使用mockjs模擬後臺返回json資料前端MockJSON
- Android 優雅地處理後臺返回的騷資料Android
- 資料中臺(安全篇)
- undefined與除去null的其他資料比較返回都是falseUndefinedNullFalse
- ajax後臺返回的資料為空前臺顯示出現undefined的解決方法Undefined
- 資料中臺的思考與總結
- 談一談資料中臺的原罪
- 資料中臺中的核心概念解析
- 對資料中臺的梳理與思考
- 資料中臺(資料整合篇)
- 資料中臺和平臺區別在哪
- 10張架構圖詳解資料中臺,附全套資料中臺PPT架構
- spring boot 解決後臺返回 json 到前臺中文亂碼之後出現返回json資料包錯Spring BootJSON
- 地產業 X 資料中臺產業
- 資料中臺(介紹篇)
- 資料中臺(方法論篇)
- 資料中臺(架構篇)架構
- iOS返回的JSON資料中的unicode 轉換為中文iOSJSONUnicode
- Laravel 後臺如何返回國際化的訊息Laravel
- 資料中臺的前世今生 :帶你全面瞭解阿里巴巴做資料中臺的歷史阿里
- 資料平臺、大資料平臺、資料中臺……還分的清不?大資料
- 資料中臺(資料資產管理篇)
- 智慧使用者資料中臺背後,易觀的蝶變與洞見
- 奇點雲資料中臺技術匯(七) | 資料智慧模型——資料中臺航母的作戰叢集模型