2013-03-04 2 views
0

저는 프로그래밍이 강력하지 않고 아주 간단한 문제에 직면 해있는 것처럼 보입니다. json으로 REST Request를 통해 서버에 데이터를 게시하는 방법을 알 수 없다. 접수한다 형식 내가 기사 Post data in Objective C using Json를 찾았지만 제대로 내 문자열을 포맷 할 수 없습니다Objective-C에서 JSON을 통해 REST를 게시하는 방법

{ 
    "date": "2012-12-20 12:00:00", 
    "address": "asd", 
    "name": "asdasdasdasdasd", 
    "shipping_date": "2012-12-20 12:00:00", 
    "receiver_phone": "123456789", 
    "customer_phone": "123456789", 
    "total_price": "1234", 
    "items": { 
     "1": { 
      "item_id": "1", 
      "quantity": "1", 
      "type": "1", 
      "color_id": "0" 
     } 
    } 
} 

입니다.

+1

AFNetworking, RestKit 등의 인기있는 네트워킹 라이브러리를 사용해 볼 수 있습니다. 이러한 종류의 RESTful webservices 먼지는 간단합니다. 당신이 그들을 사용하지 않는 경우에도 모든 값을 가진 NSDictionary 인스턴스를 형성 할 수 있습니다. 나는 항목의 가치가 배열이라고 생각한다. 그런 다음 사전의 데이터를 요청의 postData에 게시하십시오. NSDictionary dictionaryWithObjectsAndKeys : [NSDictionary dictionaryWithObjectsAndKeys : – Anupdas

+0

NSDictionary * dic = [[NSDictionary 할당] initWithObjectsAndKeys : @ "2013-03-03 12:12:12", @ "날짜", @ "주소" @ "1"@ 닐] "1"@ "color_id"@ @ "0"@ @ "1", "ITEM_ID", "양" "1"@ @ "타입" , nil], @ "items", nil]; – Asike

+0

이 같은 smth? – Asike

답변

0

게시물이 정확히 원하는 것, 형식 지정 비트 빼기 것 같습니다. JSONKit is a very simple 클래스를 사용하십시오. 나는 그것이 NSJSONSerialization보다 강력하다는 것을 알았습니다. 그러나, 나는 NSJSONSerialization을 스티치합니다

// create a dictionary with the structure you want 
NSDictionary *dict = @{ 
    @"date":@"2012-12-20 12:00:00", 
    @"address":@"asd", 
    @"name":@"asdasdasdasdasd", 
    @"shipping_date":@"2012-12-20 12:00:00", 
    @"receiver_phone":@"123456789", 
    @"customer_phone":@"123456789", 
    @"total_price": @"1234", 
    @"items": @{ 
     @"1": @{ 
      @"item_id": @"1", 
      @"quantity": @"1", 
      @"type": @"1", 
      @"color_id": @"0" 
     } 
    } 
}; 
NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:nil error:&error]; 

if (error) { 
    // handle accordingly 
} 
else if (jsonData != nil) { 
    NSString *jsonRequest = [[NSString alloc] initWithData:jsonData encoding:NSUTF*Encoding]; 
    // build request like example 
} 

은 이제 예를 들어 나머지를 사용할 수 있습니다.

UPDATE :

내가 JSONKit이 훨씬 더 강력한 NSJSONSerialization 이상 찾을 적은 단계를 필요로하지만 NSJSONSerialization은 동일한 결과를 생성해야하고, ARC 및 비 ARC 코드를 혼합에 대한 걱정이 필요하지 않습니다.

업데이트 2는 :

나는 (즉, 값 대신 NSStringNSNumber 될 수 있습니다) 덜 까다 롭고이다, JSONKit 심각한 표정을주고 추천 할 것입니다. JSONKit.m에 대한 빌드 단계에서 -fno-objc-arc 플래그를 설정해야합니다.

+0

감사합니다. – Asike

+0

@Asike 원하는 데이터 구조를 만드는 방법에 대한 더 나은 예제가 업데이트되었습니다. –

+0

아쉽게도 JSONKit은 Objective-C 자동 참조 계산 (ARC) – Asike

0

사전을 만든 다음 NSJSONSerialization을 사용하여 데이터로 변환하는 것이 좋습니다.

NSDictionary *params = ... 

NSError *error; 
NSData *postdata = [NSJSONSerialization dataWithJSONObject:params 
                options:0 
                error:&error]; 
[request setHTTPBody:postData]; 
관련 문제