2013-05-15 3 views
3

문자열을 json 개체로 변환하려고하고 있는데 이것이 작동하지 않는 이유가 확실하지 않습니다. 내가 출력을 nslog 할 때 urldata가 json serialization에 유효하지 않지만 유효한 json처럼 보이는 문자열을 볼 수 있다고 들었습니다. 나는 utf8로 인코딩하려고했지만 여전히 직렬화되지 않을 것이다. 내가 여기서 뭔가를 놓치고 있니? - 게시물에서 불필요한 코드를 생략하십시오.JSON 데이터를 구문 분석 할 때 발생하는 문제

GET 요청

urlData = [NSURLConnection sendSynchronousRequest:urlRequest 
           returningResponse:&response 
              error:&error]; 

NSDictionary *tempDict = [NSDictionary alloc]; 

구문 분석

if ([NSJSONSerialization isValidJSONObject:urlData]) { 
    NSLog(@"is valid"); 
    tempDict = [NSJSONSerialization JSONObjectWithData:urlData kniloptions error:&error]; 
} 

NSLog(@"is not valid"); 

정의 : isValidJSONObject : 주어진 객체를 JSON 데이터로 변환 할 수 있는지 여부를 나타내는 부울 값을 반환 .

+1

IsValidJsonObject는 잘못된 방법과 비슷합니다. 데이터를 데이터로 변환하기 전에 객체를 검사하는 것 같습니다. 다른 방향으로 원해. – Fogmeister

+0

@ Fogmeister : 당신 말이 맞아요. 이 경우, isValidJSONObject는 항상 true를 돌려 주어야한다고 생각합니다. (NSString이 JSON 직렬 가능으로 유지되는 이유) – cHao

+0

urlData는 NSData 객체입니다. NSData 객체를 JSON 데이터로 인코딩 할 수 없습니다. 그는 객체 인코딩을 확인하고 있습니다. 그는 객체 디코딩을 검사해야합니다. – Fogmeister

답변

4

이미 귀하의 질문에 언급되기 때문에, isValidJSONObject

가 주어진 객체가 가 JSON 데이터

귀하의 경우에는

을 변환 할 수 있는지 여부를 나타내는 부울 값을 반환합니다, 당신을 JSON 데이터를 생성하는 대신 JSON 데이터에서 사전을 생성하십시오. :

tempDict = [NSJSONSerialization JSONObjectWithData:urlData 
              options:NSJSONReadingMutableContainers 
              error:&error]; 

if (!tempDict) { 
    NSLog(@"Error parsing JSON: %@", error); 
} 
+0

감사합니다. – Jamesla