Prestashop Web service to return JSON
Asked Answered
G

4

11

After extensive search over internet i am sure that Prestashop does not return data in JSON format, it only returns in XML format (which leads to cross domain accessing issue unfortunately).

Now, I am trying to convert XML(returned by Prestashop) to JSON. I want to write php code which could take XML from web service and sent back JSON. For this purpose i tried many tutorial but in vain. The converted JSON does not have value in it, so is useless. The methods i tried are listed below.

http://www.sitepoint.com/php-xml-to-json-proxy/
PHP convert XML to JSON

XML to convert:

<name>
<language id="1" xlink:href="http://localhost/prestashop/api/languages/1">
<![CDATA[ iPod Nano ]]>
</language>
</name>

Returned JSON:

"name":{"language":{"@attributes":{"id":"1"}}}
Gustie answered 30/5, 2013 at 8:37 Comment(1)
I've never used the Prestashop webservice, but it may be easier to bypass the code where Prestashop creates the XML and replace it with a code where you create the json you need. This is just an idea though.Durban
B
55

I don't know about historical support for this, but...

In the latest version of Prestashop (currently v1.6.0.9), you can get a JSON response from any WebService API request by appending output_format=JSON to your request query string.

E.g. http://example.prestashop.com/api/products?output_format=JSON

Boor answered 3/11, 2014 at 17:9 Comment(2)
Still works in 1.7.2, this answer should be accepted.Progeny
FYI, output_format value is case sensitive. So, if it doesn't work, make sure you use JSON instead of json.Heracles
S
2

Using php pear "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"
        }
      }
    }
  }
}

See this link: https://www.prestashop.com/forums/topic/602449-aporte-webservice-prestashop-16-json-request-post-y-put/#elComment_2930631

Sheridan answered 27/7, 2018 at 14:44 Comment(0)
S
1

only add ?output_format=JSON end url

http://example.com/api/products?output_format=JSON

Silvern answered 27/10, 2019 at 23:4 Comment(0)
G
-1

Prestashop has die(Tools::jsonEncode([Associative Array])) for ajax return or just remove die for non ajax return.

Grappling answered 13/3, 2015 at 10:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.