ios - 在iOS中使用Restkit将JSON传递给请求主体

标签 ios objective-c json restkit

我在应用程序中使用restkit来发布/从Web服务中获取任何内容。
我有一个嵌套的json,我想发布到我的API的请求正文中。我已经使用以下代码将json传递到服务的请求主体,但是当我运行应用程序时,它在我的请求主体中返回null。

这是我想传递给请求正文的嵌套json

{
    amount =     {
        currency = INR;
        value = 1;
    };
    merchantAccessKey = UDNIRNIRFBNRIRN;
    merchantTxnId = sssscdcdcdEDFF;
    notifyUrl = "";
    paymentToken =     {
        paymentMode =         {
            cvv = 968;
            expiry = “11/20”;
            holder = AXIS;
            number = xxxxxxxxxxxx;
            scheme = asxsc;
            type = debit;
        };
        type = paymentOptionToken;
    };
    requestSignature = abgd9456fef7b3f9023232734706;
    returnUrl = "https://www.example.com/";
    userDetails =     {
        address =         {
            city = "";
            country = "";
            state = "";
            street1 = "";
            street2 = "";
            zip = "";
        };
        email = “abc@gmail.com”;
        firstName = abc;
        lastName = xyz;
        mobileNo = 1234567890;
    };
}

这是我的代码,用于将json发送到API。
- (void)ComplexRequestMapping{
 RKObjectMapping* paymentamount = [RKObjectMapping requestMapping];

  RKObjectMapping* amountMapping =
      [RKObjectMapping mappingForClass:[Amount class]];
  [amountMapping addAttributeMappingsFromDictionary:
                     @{@"currency" : @"currency", @"value" : @"value"}];
  [paymentamount
      addPropertyMapping:[RKRelationshipMapping
                             relationshipMappingFromKeyPath:@"amount"
                                                  toKeyPath:@"amount"
                                                withMapping:amountMapping]];

  RKObjectMapping* userdetailsMapping =
      [RKObjectMapping mappingForClass:[UserDetails class]];
  [userdetailsMapping
      addAttributeMappingsFromDictionary:@{
                                           @"email" : @"email",
                                           @"firstName" : @"firstName",
                                           @"lastName" : @"lastName",
                                           @"mobileNo" : @"mobileNo"
                                         }];
  RKObjectMapping* addressMapping =
      [RKObjectMapping mappingForClass:[UserAddress class]];
  [addressMapping addAttributeMappingsFromDictionary:@{
                                                       @"city" : @"city",
                                                       @"country" : @"country",
                                                       @"state" : @"state",
                                                       @"street1" : @"street1",
                                                       @"street2" : @"street2",
                                                       @"zip" : @"zip"
                                                     }];
  [addressMapping
      addPropertyMapping:
          [RKRelationshipMapping
              relationshipMappingFromKeyPath:@"address"
                                   toKeyPath:@"address"
                                 withMapping:[userdetailsMapping
                                                     inverseMapping]]];

  RKObjectMapping* paymentTokenMapping =
      [RKObjectMapping mappingForClass:[CTSPaymentToken class]];
  [paymentTokenMapping addAttributeMappingsFromDictionary:@{@"type" : @"type"}];

  RKObjectMapping* paymentOptionsMapping =
      [RKObjectMapping mappingForClass:[CTSPaymentOption class]];
  [paymentOptionsMapping
      addAttributeMappingsFromDictionary:@{
                                           @"cvv" : @"cvv",
                                           @"expiry" : @"expiry",
                                           @"holder" : @"holder",
                                           @"number" : @"number",
                                           @"scheme" : @"scheme",
                                           @"type" : @"type"
                                         }];
  [paymentOptionsMapping
      addPropertyMapping:
          [RKRelationshipMapping
              relationshipMappingFromKeyPath:@"paymentMode"
                                   toKeyPath:@"paymentMode"
                                 withMapping:[paymentTokenMapping
                                                     inverseMapping]]];
  RKRequestDescriptor* requestDes = [RKRequestDescriptor
      requestDescriptorWithMapping:amountMapping
                       objectClass:[CTSPaymentRequest class]
                       rootKeyPath:nil
                            method:RKRequestMethodPOST];
  [objectManager addRequestDescriptor:requestDes];

}

最佳答案

Try with simple json 
{
   title = Test;
   body = Sample text;
   auther = Test author;
}
// by using NSJson class you can convert json data to object.Here i manually create my own object

    yourObject *object = [yourObject new];
    object.title = @“Test”;
    object.body = @“Sample text”;
    object.author = @“Test auther”;

    RKResponseDescriptor * yourObjectDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping method:RKRequestMethodAny pathPattern:@"/test" keyPath:@"test" statusCodes:statusCodes];
    RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
    [requestMapping addAttributeMappingsFromArray:@[@"title", @"author", @"body"]];

    RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[yourObject class] rootKeyPath:@“test” method:RKRequestMethodAny];

    RKObjectManager *manager = [RKObjectManager managerWithBaseURL:BASE_URL];
    [manager addRequestDescriptor:requestDescriptor];

    // POST to create
    [manager postObject:object path:@“/test” parameters:nil success:nil failure:nil];

关于ios - 在iOS中使用Restkit将JSON传递给请求主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24423107/

相关文章:

iOS:应用内购买未显示常见演示文稿

ios - Objective-c 中的常量类

objective-c - 预处理器-IF 不起作用

javascript - 如何将参数传递给从 XMLHttpRequest 返回的 CanvasJS?

ios - GTLRDrive_File 对象缺少 modifiedTime 和 createdTime 属性

iphone - 使用图像作为 backBarButtonItem,不带文本

jquery - 如何使用 jQuery 从 json 对象中获取一些值?

javascript - 设置拖放子节点以在表格中显示json数组

ios - 转换矩形 :toView doesn't return expected window coordinates

ios - 如何操作 React Native - Native UI 组件的属性?