10

XML レスポンスを JSON に変換する必要があります。

私のXML応答:

<commands>
<command id="0" name="GetAPPsProducts">
  <command_parameters>
    <command_parameter id="0" name="APPs_Code">ATAiOS</command_parameter>
  </command_parameters>
  <command_result>
    <apps_products>
      <apps_products id="1">
        <apps_code>ATAiOS</apps_code>
        <apps_product_id>2</apps_product_id>
        <brand_id>2</brand_id>
        <brand_desc>Generic</brand_desc>
        <brand_product_id>2</brand_product_id>
        <product_id>001-7</product_id>
        <descrizione>MyTravelApp</descrizione>
      </apps_products>
    </apps_products>
  </command_result>
</command>

このサイトの XMLReader サポート ファイルを使用しています。

XMLリーダー

このコードを使用して XML を JSON に変換しています

NSError *parseError = nil;
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
NSLog(@" %@", xmlDictionary);

次のような JSON 応答が得られました。

commands =         {
        command =             {
            "command_parameters" =                 {
                "command_parameter" =                     {
                    id = 0;
                    name = "APPs_Code";
                    text = "\n  \n    \n      \n        ATAiOS";
                };
                text = "\n      ";
            };
            "command_result" =                 {
                "apps_products" =                     {
                    "apps_products" =                         {
                        "apps_code" =                             {
                            text = "\n      \n        \n          \n            ATAiOS";
                        };
                        "apps_product_id" =                             {
                            text = "\n            2";
                        };
                        "brand_desc" =                             {
                            text = "\n            Generic";
                        };
                        "brand_id" =                             {
                            text = "\n            2";
                        };
                        "brand_product_id" =                             {
                            text = "\n            2";
                        };
                        descrizione =                             {
                            text = "\n            MyTravelApp";
                        };
                        id = 1;
                        "product_id" =                             {
                            text = "\n            001-7";
                        };
                        text = "\n          ";
                    };
                    text = "\n        ";
                };
                text = "\n      ";
            };
            id = 0;
            name = GetAPPsProducts;
            text = "\n    ";
        };
        text = "\n  ";
    };
    text = "\n  \n";
};

次のような応答が必要です。

  {
  "commands": {
    "command": {
      "-id": "0",
      "-name": "GetAPPsProducts",
      "command_parameters": {
        "command_parameter": {
          "-id": "0",
          "-name": "APPs_Code",
          "#text": "ATAiOS"
        }
      },
      "command_result": {
        "apps_products": {
          "apps_products": {
            "-id": "1",
            "apps_code": "ATAiOS",
            "apps_product_id": "2",
            "brand_id": "2",
            "brand_desc": "Generic",
            "brand_product_id": "2",
            "product_id": "001-7",
            "descrizione": "MyTravelApp"
          }

オンラインでの変換中にこの応答が表示されます。このような応答を取得する方法。

前もって感謝します。

4

1 に答える 1

13
NSError *parseError = nil;
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
NSLog(@" %@", xmlDictionary);

このコードは何も JSON に変換していません。NSDictionary を提供します。実際に辞書から JSON データを作成する必要があります。サイズはこちらをご試着ください。

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:xmlDictionary 
                                                   options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                     error:&error];

if (! jsonData) {
    NSLog(@"Got an error: %@", error);
} else {
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",jsonString);
}
于 2013-03-19T12:13:07.053 に答える