2011-11-06 2 views
0

나는 JSON을 처음 사용하며 다음과 같은 형식으로 개체를 만들어야합니다.iOS에서 JSON을 사용하여 데이터 수신

{ 
    "receipt-data" : "(actual receipt bytes here)" 
    "password"  : "(shared secret bytes here)" 
} 

은 내가 "(actual receipt bytes here)" (NSData 변수)를 작성해야하고, 아이폰 OS에서의 숫자입니다 "(shared secret bytes here)". 나는 그것을 어떻게 만들 수 있는지 혼란 스럽다. 고급의

감사합니다. receiptDataString가있는 NSString가 아닌 경우

+0

일반 이진 데이터를 전송하는 데 JSON을 사용할 수 없습니다. 아마도 애플은 base64로 인코딩 된 형태로 데이터를 보내야 할 것이다. (이진 데이터를 인쇄 가능한 문자로 변환한다.) 먼저 이것을 다시 확인해야합니다. –

+0

nsdata 객체가 base64로 인코딩되도록 변환 중입니다. –

답변

-5

기본적으로 당신은 당신이 어떻게 든 하나를 변환해야합니다

[NSString stringWithFormat:@"{\"receipt-data\":\"%@\",\"password\":\"%@\"}", receiptDataString, passwordString] 

을 말할 것입니다. 아마도 Base64 인코딩을 사용합니다. (안타깝게도 Objective-C에는 표준/일반적으로 사용되는 Base64 인코더/디코더가 없습니다.)

암호가 NSString이 아닌 int 일 경우 두 번째 % @을 % d로 변경하십시오.

+1

이것은 정말 나쁜 조언입니다. JSON의 문자를 올바르게 이스케이프 처리해야합니다. 예를 들어 암호에 "문자가 포함되어 있으면이 메서드는 잘못된 JSON을 생성합니다. –

3

이것은 정말 간단합니다. receipt-entrypassword 개체를 사용하여 NSDictionary을 만듭니다. 그런 다음 사용 가능한 오픈 소스 JSON 프레임 워크 또는 iOS5에 내장 된 JSON API를 사용하고 NSDictionary을 JSON 데이터가 포함 된 NSString으로 직렬화합니다.

수동으로하지 마십시오. JSON을 올바르게 인코딩/이스케이프하고 싶습니다. 이것이 JSON 프레임 워크가 당신을 위해 무엇을하는지입니다.

관련 문제