如何将xml响应更改为json?

时间:2015-06-23 20:03:29

标签: php json xml sdk ebay

我使用davidsadler's PHP ebay SDK在我的PHP应用程序中集成ebay。每个响应都是这种类型的xml。我已经回应了

 before this response to see it clearly.

DTS\eBaySDK\Trading\Types\ItemArrayType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [Item] => DTS\eBaySDK\Types\UnboundType Object ( [data:DTS\eBaySDK\Types\UnboundType:private] => Array ( [0] => DTS\eBaySDK\Trading\Types\ItemType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [BuyItNowPrice] => DTS\eBaySDK\Trading\Types\AmountType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [currencyID] => USD [value] => 100 ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [ItemID] => 110163537686 [ListingDetails] => DTS\eBaySDK\Trading\Types\ListingDetailsType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [StartTime] => DateTime Object ( [date] => 2015-06-16 17:20:21.000000 [timezone_type] => 2 [timezone] => Z ) [ViewItemURL] => http://cgi.sandbox.ebay.com/Test-/110163537686 ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [ListingDuration] => GTC [ListingType] => FixedPriceItem [Quantity] => 100 [SellingStatus] => DTS\eBaySDK\Trading\Types\SellingStatusType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [CurrentPrice] => DTS\eBaySDK\Trading\Types\AmountType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [currencyID] => USD [value] => 100 ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [ShippingDetails] => DTS\eBaySDK\Trading\Types\ShippingDetailsType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [ShippingServiceOptions] => DTS\eBaySDK\Types\UnboundType Object ( [data:DTS\eBaySDK\Types\UnboundType:private] => Array ( [0] => DTS\eBaySDK\Trading\Types\ShippingServiceOptionsType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [ShippingServiceCost] => DTS\eBaySDK\Trading\Types\AmountType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [currencyID] => USD [value] => 2 ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) ) [position:DTS\eBaySDK\Types\UnboundType:private] => 0 [class:DTS\eBaySDK\Types\UnboundType:private] => DTS\eBaySDK\Trading\Types\ShippingDetailsType [property:DTS\eBaySDK\Types\UnboundType:private] => ShippingServiceOptions [expectedType:DTS\eBaySDK\Types\UnboundType:private] => DTS\eBaySDK\Trading\Types\ShippingServiceOptionsType ) [ShippingType] => Flat ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [TimeLeft] => P22DT21H24M4S [Title] => Test [QuantityAvailable] => 100 [SKU] => ABC-001 [PictureDetails] => DTS\eBaySDK\Trading\Types\PictureDetailsType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [GalleryURL] => http://thumbs.sandbox.ebaystatic.com/pict/1101635376866464.jpg ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [SellerProfiles] => DTS\eBaySDK\Trading\Types\SellerProfilesType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [1] => DTS\eBaySDK\Trading\Types\ItemType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [BuyItNowPrice] => DTS\eBaySDK\Trading\Types\AmountType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [currencyID] => USD [value] => 89 ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [ItemID] => 110163540851 [ListingDetails] => DTS\eBaySDK\Trading\Types\ListingDetailsType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [StartTime] => DateTime Object ( [date] => 2015-06-16 20:33:27.000000 [timezone_type] => 2 [timezone] => Z ) [ViewItemURL] => http://cgi.sandbox.ebay.com/watch-/110163540851 ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [ListingDuration] => GTC [ListingType] => FixedPriceItem [Quantity] => 20 [SellingStatus] => DTS\eBaySDK\Trading\Types\SellingStatusType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [CurrentPrice] => DTS\eBaySDK\Trading\Types\AmountType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [currencyID] => USD [value] => 89 ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) [ShippingDetails] => DTS\eBaySDK\Trading\Types\ShippingDetailsType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [ShippingServiceOptions] => DTS\eBaySDK\Types\UnboundType Object ( [data:DTS\eBaySDK\Types\UnboundType:private] => Array ( [0] => DTS\eBaySDK\Trading\Types\ShippingServiceOptionsType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [ShippingServiceCost] => DTS\eBaySDK\Trading\Types\AmountType Object ( [values:DTS\eBaySDK\Types\BaseType:private] => Array ( [currencyID] => USD [value] => 2 ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) ) ) [attachment:DTS\eBaySDK\Types\BaseType:private] => Array ( [data] => [mimeType] => ) )

我尝试使用php和simplexml_load_file等函数的json_encode函数将此响应转换为json。但转换的数据总是空的。任何帮助将不胜感激。

更新: 问题已在新版eBay PHP SDK中得到解决,该版本为0.1.3 他在BaseType中添加了一个新方法,即toArray(),它将响应转换为关联的数组。感谢davidsadler。链接到changelog https://github.com/davidtsadler/ebay-sdk/blob/master/CHANGELOG.md#013---2015-06-20

1 个答案:

答案 0 :(得分:0)

试试这个http://goessner.net/download/prj/jsonxml/

请务必阅读xml.com O'Reilly网站http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html上的随附文章,其中详细介绍了这些转化的问题,我认为您会发现这些问题很有启发性。 O'Reilly主持该文章的事实应该表明Stefan的解决方案具有优点。