2014-01-29 125 views
1

我想要生成一個使用PHP傳遞給客戶端使用已存儲在MySQL數據庫中的數據的JSON對象。從多維數組創建一個JSON對象存儲爲字符串

該數據庫包含多面的座標列表象下面這樣一個文本字段:

[ 
    [ 
     [ 
      [ 
       104.39209000000005, 
       -4.850154 
      ], 
      [ 
       108.17138687500005, 
       -3.721745195827911 
      ], 
      [ 
       112.12646500000005, 
       -1.274309 
      ], 
      [ 
       103.02978499999995, 
       -3.579213 
      ] 
     ] 
    ] 
] 

當我嘗試生成一個使用JSON對象json_encode我得到如下:

{ 
    "coordinates": "[[[[104.39209000000005,-4.850154],[108.17138687500005,-3.721745195827911],[112.12646500000005,-1.274309],[103.02978499999995,-3.579213]]]]" 
} 

而且由於圍繞座標本身的引號,它們不被JavaScript識別爲JSON對象。

我試圖展開座標字符串,然後手動放回到一起,但它仍然需要大量的黑客才能使其工作。 任何幫助在PHP中獲取它作爲實際的JSON對象輸出將不勝感激。

我試圖去這樣的:

{ 
    "coordinates": [ 
     [ 
      [ 
       [ 
        104.39209000000005, 
        -4.850154 
       ], 
       [ 
        108.17138687500005, 
        -3.721745195827911 
       ], 
       [ 
        112.12646500000005, 
        -1.274309 
       ], 
       [ 
        103.02978499999995, 
        -3.579213 
       ] 
      ] 
     ] 
    ] 
} 
+1

**顯示php代碼**,你是如何從數據庫中獲取數據的,你如何將它分配給一個變量? –

+1

你可以簡單地通過'JSON.parse()'來提供你的字符串嗎? – Scuzzy

+1

或者通過服務器端的['json_decode'](http://us2.php.net/json_decode)。 – user113215

回答

0

這是非常傑裏 - 操縱,但你可以這樣做:

$string = json_encode($database_value); // same as you're using now 
$string = str_replace('"', '', $string); // get rid of the quotes 

// wrap them back around 'coordinates' 
$string = str_replace('coordinates', '"coordinates"', $string); 
0

只需json_encode使用前json_decode,像這樣:

// This comes from the database, of course 
$coords = '[[[[104.39209000000005,-4.850154],[108.17138687500005,-3.721745195827911],[112.12646500000005,-1.274309],[103.02978499999995,-3.579213]]]]'; 

echo json_encode(array(
    'coordinates' => json_decode($coords) 
)); 

這將完全按照您的願望輸出嵌套陣列:

{"coordinates":[[[[104.39209,-4.850154],[108.171386875,-3.7217451958279],[112.126465,-1.274309],[103.029785,-3.579213]]]]} 
+1

爲什麼downvote,有什麼不對? –

相關問題