在magento中我们使用rest url来访问数据,因为http://localhost/magento/api/rest/products它以xml格式返回,而不是我需要JSON。
我试过下面的代码,但没有用
$this->getResponse()->setHeader('Content-type', 'application/json');
$this->getResponse()->setBody($jsonData);
在文件夹\ magento \ app \ code \ core \ Mage \ Api \ Controller \ Action.php
答案 0 :(得分:4)
vinox,您应该覆盖默认文件Request.php。将\ app \ code \ core \ Mage \ Api2 \ Model \ Request.php复制到本地目录,并在getAcceptTypes()方法结束之前添加以下代码。
unset($orderedTypes);
$orderedTypes=Array("application/json" => 1);
以其他方式,您的getAcceptTypes()方法应该如下所示。
public function getAcceptTypes(){
$qualityToTypes = array();
$orderedTypes = array();
foreach (preg_split('/,\s*/', $this->getHeader('Accept')) as $definition) {
$typeWithQ = explode(';', $definition);
$mimeType = trim(array_shift($typeWithQ));
// check MIME type validity
if (!preg_match('~^([0-9a-z*+\-]+)(?:/([0-9a-z*+\-\.]+))?$~i', $mimeType)) {
continue;
}
$quality = '1.0'; // default value for quality
if ($typeWithQ) {
$qAndValue = explode('=', $typeWithQ[0]);
if (2 == count($qAndValue)) {
$quality = $qAndValue[1];
}
}
$qualityToTypes[$quality][$mimeType] = true;
}
krsort($qualityToTypes);
foreach ($qualityToTypes as $typeList) {
$orderedTypes += $typeList;
}
unset($orderedTypes);
$orderedTypes=Array("application/json" => 1);
return array_keys($orderedTypes);
}
答案 1 :(得分:1)
我猜你的$ jsonData实际上并不是JSON。尝试使用json助手
$jsonData = Mage::helper('core')->jsonEncode($data)