2011-08-17 3 views
0

NSLog가 전체 JSON 파일을 출력 할 수있는 방법이 있습니까? "(널) = JSON 파일을"Xcode NSLog를 JSON하는 방법

덕분에 나는 현재

NSString *deviceInfo = [NSString stringWithFormat:@"%@ %@", 
         [[UIDevice currentDevice]model], [[UIDevice currentDevice]systemVersion]]; 
NSDictionary *json = [deviceInfo JSONValue]; 
NSLog(@"json file = %@", json); 

을 말하고 그리고 밖으로 인쇄하는 클린턴

답변

3

을 경우

는 당신이 JSON가 무엇인지 오해 것 같아요. -JSONValue에 전달하는 문자열이 유효한 JSON 문자열이 아니므로 nil을 반환합니다. 당신이 개체의 JSON 문자열 표현하려면 (서버에 보내는을 예를 들어) 다음

UIDevice *device = [UIDevice currentDevice]; 
NSDictionary *deviceInfo = [NSDictionary dictionaryWithObjectsAndKeys:[device model], @"deviceModel", [device systemVersion], @"deviceSystemVersion", nil]; 

: 당신은뿐만 아니라 사전에 자신을 구성 할 수

NSString *jsonDeviceInfo = [deviceInfo JSONRepresentation]; 
+0

꽤 잘하고 있습니다. 현재이'{ "deviceModel": "iPod touch", "deviceSystemVersion": "4.3.5"}'를 인쇄하고 각각의 외부에 여러 개의 블록과 무언가를 "하드웨어" : { "deviceModel": "iPod touch"} "os": { "deviceSystemVersion": "4.3.5"}'어떻게할까요? –

+0

사전을 중첩하면됩니다. '[NSDictionary dictionaryWithObjectsAndKeys : someDictionary, @ "someKey", someOtherDictionary, @ "someOtherKey", nil]' –

+0

예, 성공했습니다. 한가지 더. NSDictionary에서 순서를 변경할 수없는 것처럼 보입니다. NSDictionary * fullJSON = [NSDictionary dictionaryWithObjectsAndKeys : 하드웨어, @ "hw", os, @ "os", nil]; '하지만, {{ "os": { "ver": "4.3.5" } "hw": { "model": "iPod touch"}}'나는 필요 없다고 생각하지만 하드웨어를 먼저 만들 수 있다면 좋을 것 같습니다. –

1

당신은 당신의 코드가 제대로 작동하는지 확인 있습니까? 귀하의 NSDictionary는 아무 것도 아닌 것 같습니다 ...

JSONValue의 구현을 게시 하시겠습니까? 객체가 항상 확장을 통해 -(NSString *) description 방법을 대체 할 수 있습니다 예상대로 인쇄되지 않으며 당신이 지정한 방법 인쇄됩니다 :)

+0

내가'NSLog 시도 (@ "json file = % @", [json description]); 그리고 나는 여전히 (null)을 받았다. 또한 JSONValue에 오류가있는 것으로 보입니다. '-JSONValue가 실패했다. 오류 추적은 다음과 같습니다. ( "오류 도메인 = org.brautaset.JSON.ErrorDomain 코드 = 3 \"인식 할 수없는 선행 문자 \ "UserInfo = 0x1cc3c0 {NSLocalizedDescription = 인식 할 수없는 주}}"'구현의 의미를 알지 못합니다. –

+1

NSString은 JSONValue afaik라는 메서드를 구현하지 않으므로 직접 구현해야합니까?이 메서드에서 사용하는 코드는 무엇입니까? – Julian

+0

JSONValue는 JSON 라이브러리에서 가져온 것으로 - (id) JSONValue { SBJsonParser * jsonParser = [SBJsonParser 새로운] 아이디에 repr = [jsonParser objectWithString : 자기] (!에 repr) NSLog (@ 경우 . "- JSONValue 실패는 오류 추적은 다음과 같습니다 %의 @", [jsonParser errorTrace ]); [jsonParser release]; return repr; }' –

관련 문제