2014-11-04 1 views
0

나는 내 자신의 서버 (Apache-> PHP)와 통신하는 응용 프로그램을 개발하고 내가 앱에 서버에서 PHP 코드로 간단한 JSON 사전을 보내고 :추출 값은

$aJSON = array('Result' => TRUE, 'Result_Msg' => "Success!!!"); 
echo json_encode($aJSON); 
이러한 코드 라인

나는 키에서 값을 추출 할 : '결과'와 'Result_Msg'

// Logging the received and converted JSON/NSMutableDictionary 
NSLog(@"responseDict=%@",dJSON); 

BOOL b = [dJSON objectForKey:@"Response"]; 
NSString *string = [dJSON objectForKey:@"Result_Msg"]; 

NSLog(@"%@", [dJSON objectForKey:@"Response_Msg"]); 
NSLog(@"%@", [dJSON valueForKey:@"Response_Msg"]); 
NSLog(@"%@", [dJSON valueForKey:@"Response"]); 
NSLog(@"%@", [dJSON objectForKey:@"Response"]); 

그리고 내 인쇄/JSON 결과는 다음과 같다 기록 :

,

responseDict = { 결과 = 1; "Result_Msg"= "사용자가 성공적으로 추가되었습니다. 메일 주소를 확인하십시오."; }

불행히도 모든 NSLog와 변수 "b"와 "string"은 (null)과 같습니다.

또한 Result는 따옴표 ("")가 없지만 따옴표 안에있는 Result와 같은 두 가지 종류의 키에 대해 혼란 스럽습니다.

누군가가 도움을 줄 수 있기를 바랍니다. 미리 감사드립니다!

EDIT :

변수 "dJSON"가 이미있는 NSDictionary (/ MutableDic)이다. 나는이 라인이 일을하고있다 :

NSError *errorJson=nil; 
    NSMutableDictionary* dJSON = [NSJSONSerialization JSONObjectWithData:_responseData options:kNilOptions error:&errorJson]; 
if (error) 
{ 
    UIAlertView *alert .... 
    return; 
} 

// --- 분석을하고 값을 추출 --- //

+0

PHP로 생성 된 JSON입니까? json_encode()? PHP의 JSON은 따옴표로 묶인 모든 키와 값을 필요로합니다. 또한, 그것은 혼자 ";" 결국 비린내가됩니다.어쨌든, 첫 번째 단계로 JSON을 다음 형식으로 편집 해보십시오. { "Result"= "1"; "Result_Msg"= "foo"} – David162795

+0

답변을 주셔서 감사합니다. 측면 난 그냥 이전과 같은 응답을 가지고 : responseDict = { 결과 = 1; "Result_Msg"= "성공 !!!"; } – user3191334

+0

그런 다음 JSON 문자열이 손상됩니다. 객관적 c가 내 분야가 아니기 때문에 나는 더 이상 당신을 도울 수 없다는 것을 유감스럽게 생각합니다. – David162795

답변

0

:

BOOL myBool = [[myDictionary valueForKey:@"myKey"] boolValue]; 

그리고 귀하의 문자열 : 당신이와 bollean를 검색 할 수

그런

EDIT (귀하의 경우 AFHTTPRequestOperation 봐) ... 그것은 내가 가지고있는 가장 바보 같은 시간 낭비의 실수와 같았습니다. 나는 여분의 열쇠를 내기 위해 잘못된 열쇠를 사용했습니다. ct 사전에서 값을! 그것은 Response_Msg와 Response가 아니며, Result와 Result_Msg입니다. 그것은 첫눈에 똑같이 보입니다.

모두에게 감사드립니다.

0

PHP 코드에서 사전을 retreive하는 두 가지 간단한 방법이 있습니다. 당신이 당신의 목표 - C 코드에서 서버로 통화를 변경할 필요가 없습니다

첫 번째는,이 기능을 사용하는 것입니다 : 두 번째는 AFNetworking 라이브러리를 사용하는 것입니다

- (NSDictionary *)dictionaryFromJSONData:(NSData *)data 
{ 
    NSError *error; 
    NSDictionary *dictionaryParsed = [NSJSONSerialization JSONObjectWithData:data 
                   options:0 
                    error:&error]; 
    if (!dictionaryParsed) 
    { 
     if (error) 
     { 
      NSLog(@"Error parsing dictionary"); 
     } 
     return nil; 
    } 
    return dictionaryParsed; 
} 

, 어떤을, 그건 그렇고, 많은 유용한 것들을 제공합니다. 나는 그것을 해결

NSString *myString = [myDictionary objectForKey:@"myKey"]; 
+0

죄송합니다. 전에 언급 한 것을 잊어 버렸습니다. 물론 이전에 변환을 했었습니다. 변수 "dJSON"은 이미 NSDictionary입니다! – user3191334

+0

그리고 그 줄의 코드에 중단 점을 추가 할 때 사전에 올바른 값을 보았습니까? – zbMax

+0

예, 키와 같은 일반적인 키/값 쌍이 있습니다. 결과 값 : 1; 키 : Result_Msg 값 : 성공 !!! – user3191334