2014-06-25 2 views
5

는 서버에서 검색 JSON 개체에있는 NSDictionary를 설정하려고 반환 . 그러나, 문제가, null JSON 개체의 값은 사전에 "<null>" 문자열 값으로 저장됩니다. 이 문제를 해결하거나 해결할 방법이 있습니까? 나는 전체를 가로 지르는 것을 피하고 그들을 @""으로 설정하는 것을 피하고 싶다.NSJSONSerialization, 나는이 줄 것을하고 있어요 "<null>는"난 문자열

도움 주셔서 감사합니다.

가 쉽게 API를 업체에서 수정 될 수 있지만 제 생각 엔 아무것도 없다

답변

1

이 가능하지 않은 경우, 당신은 항상 간단한 매크로를 넣을 수 있습니다, 나는

아래 매크로를 다음과 같은 일을 방지하기 위해 사용 Carpetfizz ~
#define Is_Empty(value) (value == (id)[NSNull null] || value == nil || ([value isKindOfClass:[NSString class]] && ([value isEqualToString:@""] || [value isEqualToString:@"<null>"]))) ? YES : NO 

#define IfNULL(original, replacement) IsNULL(original) ? replacement : original 

#define IsNULL(original) original == (id)[NSNull null] 

#define SafeString(value) IfNULL(value, @"") 

사용

self.label.text=SafeString([dic objectForKey:@"name"]); 
7

당신이 잘못입니다. JSON의 null 값은 이 아니며 null> 문자열 값으로 저장된이 아닙니다. 그들은 NSNull 개체로 저장되며 NSLog는 < null로 기록합니다.

받은 데이터는 절대로 믿을 수 없습니다. NSString이 있다고 가정하고 서버가 숫자를 보내면 코드가 손상 될 가능성이 있습니다.

NSString* myJSONString = ...; 
if ([myJSONString isKindOfClass:[NSString class]]) { 
    it is a string 
} else { 
    it is not a string 
} 
+0

'(추가 정보의 비트를 추가하는) 그들은 문자열로 NSLog 할뿐만 아니라, [있는 NSString stringWithFormat : "%의 @"@, nullObj] '됩니다 앱에서 출력' '하는 대부분의 사람들이이 dataType을 디버깅하여 오도 된 이유입니다. –