Prestashop Web 服务返回 JSON
Posted
技术标签:
【中文标题】Prestashop Web 服务返回 JSON【英文标题】:Prestashop Web service to return JSON 【发布时间】:2013-05-25 18:03:12 【问题描述】:在互联网上进行广泛搜索后,我确信 Prestashop 不会以 JSON 格式返回数据,它只会以 XML 格式返回(不幸的是,这会导致跨域访问问题)。
现在,我正在尝试将 XML(由 Prestashop 返回)转换为 JSON。我想编写可以从 Web 服务获取 XML 并返回 JSON 的 php 代码。为此,我尝试了许多教程但徒劳无功。转换后的 JSON 没有价值,所以没用。 下面列出了我尝试的方法。
http://www.sitepoint.com/php-xml-to-json-proxy/PHP convert XML to JSON
要转换的 XML:
<name>
<language id="1" xlink:href="http://localhost/prestashop/api/languages/1">
<![CDATA[ iPod Nano ]]>
</language>
</name>
返回的 JSON:
"name":"language":"@attributes":"id":"1"
【问题讨论】:
我从未使用过 Prestashop 网络服务,但绕过 Prestashop 创建 XML 的代码并将其替换为您创建所需 json 的代码可能更容易。这只是一个想法。 【参考方案1】:我不知道这方面的历史支持,但是...
在最新版本的 Prestashop(当前为 v1.6.0.9)中,您可以通过将 output_format=JSON
附加到您的请求查询字符串来从任何 WebService API 请求中获取 JSON 响应。
例如
http://example.prestashop.com/api/products?output_format=JSON
【讨论】:
在 1.7.2 中仍然有效,应该接受这个答案。 仅供参考,output_format 值区分大小写。因此,如果它不起作用,请确保使用 JSON 而不是 json。【参考方案2】:使用php梨“XML_Serializer”:
"product":
"id_category_default": "XXX",
"id_tax_rules_group": "1",
"type": "simple",
"id_shop_default": "1",
"reference": "XXXXXXXX",
"price": "XX.XXXXXX",
"active": "1",
"redirect_type": "404",
"id_product_redirected": "0",
"available_for_order": "1",
"condition": "new",
"show_price": "1",
"indexed": "0",
"visibility": "both",
"advanced_stock_management": "0",
"link_rewrite":
"language":
"_attributes":
"id": "1"
,
"_content": "ipod-nano"
,
"name":
"language":
"_attributes":
"id": "1"
,
"_content": "iPod Nano"
,
"associations":
"categories":
"category":
"id": "XXX"
,
"stock_availables":
"stock_available":
"id": "XXXX",
"id_product_attribute": "X"
查看此链接:https://www.prestashop.com/forums/topic/602449-aporte-webservice-prestashop-16-json-request-post-y-put/#elComment_2930631
【讨论】:
【参考方案3】:只添加 ?output_format=JSON 结束 url
http://example.com/api/products?output_format=JSON
【讨论】:
【参考方案4】:Prestashop 有 die(Tools::jsonEncode([Associative Array])) 用于 ajax 返回或仅删除 die 用于非 ajax 返回。
【讨论】:
以上是关于Prestashop Web 服务返回 JSON的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ASP.NET Web 服务生成 JSONP 以进行跨域调用?
使用 jQuery jsonp 跨域调用到 ASP.NET Web 服务