2014-07-24 2 views
0

Objective-C 및 JSON에 익숙하지 않아이 작업을 수행하는 방법에 대해 혼란스러워합니다. 자습서를 찾아 보았고 JSON이 유효한지 확인했습니다.Objective-C에서 JSON 구문 분석

JSON 구문 분석을 통해 액세스하려는 SQL 서버 데이터베이스가 있습니다. 내 JSON이 유효한지 확인했습니다. 그러나 JSON을 Objective-C로 파싱하려고 할 때마다 항상 null이 반환됩니다. 나는 NSLog

+3

아니다. 그것은 목적이 있습니다. NSJSONSerialization의 결과가 nil이면 NSLog를 사용하여 "error"를 출력합니다. NSLog (@ "JSON error = % @", 오류), ' –

+0

http://quacknasty.com/service.php에 액세스하려고했습니다. Google 크롬 브라우저를 사용하여 빈 []을 반환했습니다. 서버에서 JSON을 반환합니까? 그런데 위의 코드에서 urlString은 중복되어 있습니다. [NSURL URLWithString : @ "http : // ....."]; 대신 [NSURL URLWithString : urlString]; urlString 변수를 문자열 리터럴 @ "http : // ...."로 줄일 수 있기 때문에; – Zhang

+0

@ Zhang : 기술적으로'[]'은 절대적으로 유효한 JSON입니다! 그는 어제부터 그의 서버 코드를 변경했다. 내 대답을 보자. 원래 API 응답이있다. @ user3871044 : 내 대답으로 문제가 해결 되었습니까? 그럼 받아 들일 것을 기억하십시오 :) –

답변

3

쉬운 하나를 수행 할 때

NSString *urlString = [NSString stringWithFormat:@"http://quacknasty.com/service.php"]; 

NSURL *url = [NSURL URLWithString:urlString]; 

NSData *data = [NSData dataWithContentsOfURL:url]; 

NSError *error; 

NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 

NSLog(@"test%@", json); 

json 항상 null을 반환 : URL을 열고 다음

[ 
{ 
    "ID": 1, 
    "Username": "Cray", 
    "Password": "fake", 
    "Active": 0, 
    "LastLogin": null 
} 
] 

내 목표 - C 코드입니다 : 여기

내 JSON입니다 브라우저에서. 당신은 Connection established.\n

편집의 에코를 제거해야

Conneection established. 
[{"ID":1,"Username":"Cray","Password":"fake","Active":0,"LastLogin":null}] 

나는 : 당신은 당신이 올바른 JSON이없는 것을 볼 수 당신은 루트 객체로 NSArray를 사용할 수있는 JSON 문자열 시작하기 때문에 []

편집 II와 함께 다음과 같이는 또한 올바른 HTTP 헤더 필드를 설정해야합니다

header('Content-Type: application/json; charset=utf-8'); 
0

요청하기. 응답은 다음과 같습니다

Conneection established. 
<br />[{"ID":1,"Username":"Cray","Password":"fake","Active":0,"LastLogin":null}] 

그것은 당신이 "오류"라는 그 PARM를 참조 JSON 형식