2015-09-11 24 views
0

我對此有很多困惑。 Highcharts有一個特定的格式來接受系列中的數據。它是這樣的,例如:需要將JSON對象轉換爲JSON數組以供Highcharts使用

[ { name: 'Title Here', data: [1,2,3,4,5] } ] 

我的問題,雖然是使用json_encode()我在PHP AJAX是將數據轉換我送回到一個JS對象這樣的整個陣列:

$data = [ 
     'name' => 'Percent', 
     'data' => [1,2,3,4] 
     ]; 
return json_encode($data); 

// Returned Result 
{name: "Percent", data: {0: 1, 1: 2, 2: 3, 4: 4}} 

這導致了圖表渲染返回的數據時出現問題。我如何將返回的數據轉換爲第一種正確的方式?我迷失在如何完成這一點。

+1

什麼是'json_parse()'?你的意思是'json_encode()'? –

+2

另外,沒有像「JSON對象」或「JSON數組」那樣的東西。 JSON是數據的*字符串*表示(如XML)。如果它不是字符串,那不是JSON。 –

+0

是的,我的意思是編碼。我明白這一點。這是一個漫長的一天,我的條件是離開。我在技術上使用Laravel 5,我使用Response :: json([]);這與json_encode完全相同。 – jamadri

回答

1
$data = [[ 
     'name' => 'Percent', 
     'data' => [1,2,3,4] 
     ]]; 
return json_encode($data); 

在JavaScript中卻毫無關聯數組,你的數組['name'=>...]翻譯當你申請json_encode()給它的對象。

+1

OP爲什麼要「只是」?一個好的答案將總是解釋做了什麼以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來SO的訪問者。 –

+0

就是這樣。我道歉。對我來說這是一個瘋狂的漫長的一週,我的思緒有點油炸。 – jamadri

+1

@JayBlanchard看到更新,對於語言感到抱歉,它對我來說不是原生的:) –

1

即Highcharts需要是JavaScript Array含有Object格式。

PHP的json_encode函數將編碼一個普通數組作爲前者,但帶有字符串鍵的關聯數組將自動編碼爲後者。因此,您只需要包裝在陣列中的一個層以上現有的數據:但是

$data = [ 
    [ 
    'name' => 'Percent', 
    'data' => [1, 2, 3, 4] 
    ] 
]; 

我注意到,你說,普通數組[1, 2, 3, 4]似乎已經轉換成對象{0:1, 1:2, 2:3, 3: 4}

這是不是標準PHP json_encode的行爲,也許是你真正使用的Laravel Response::json([ ])調用的一個怪癖?