2017-10-04 63 views
-5

嘿,我想通過使用json_encode以json格式回傳數據。PhP返回Json在[]

但是它好像又回到這樣的:

[{‘county’:’us’,’sector’:’retail’}] 

但是終端用戶已經表示,他們希望沒有方括號的響應。

我該怎麼做?

謝謝。

+0

分享你的代碼你如何生成json? –

+0

你能給我們一個你想要輸出的數組的例子嗎?另外有趣的是,將數組作爲json的第一層是可利用的。 [OWASP鏈接](https://www.owasp.org/index.php/AJAX_Security_Cheat_Sheet#Always_return_JSON_with_an_Object_on_the_outside) – Andrew

+1

用'''?真?我想不出任何'json_encode'會這樣做。你也沒有包含[mcve]。我們無法解決您未向我們顯示的代碼問題。 – Quentin

回答

1

取決於您如何生成您編碼的值... json_encode有一個選項JSON_FORCE_OBJECT您可以使用,但從我可以看到,這可能不是你想要的,因爲在我看來這隻會將「方形括號「放入包裝對象中。不過,如果你想嘗試:

json_encode($value, JSON_FORCE_OBJECT); 

編輯:正如其他人所說,這很可能是json_encode($value[0])你想要什麼。

+0

完美的JSON_FORCE_OBJECT似乎已經完成了這一招,謝謝你們 –

1

假設你的數組是:

$data = [ 
    'country' => 'us', 
    'sector' => 'retail', 
]; 

然後就返回一個json_encoded陣列像這樣:

json_encode($data); 
// {"country":"us","sector":"retail"} 

但是,如果與數據的數組是 「嵌套」 像這樣:

$data = [[ 
    'country' => 'us', 
    'sector' => 'retail', 
]]; 

然後返回它的編碼的第一個元素:

json_encode($data[0]); 
// {"country":"us","sector":"retail"} 
0

我對這種情況的體會是,您意外地將數據存儲爲數組的第一項。

例如,你可以這樣做:

$json_store = Array(); 
$json_store[] = Array('country' => 'us', 'sector' => 'retail'); 
$json = json_encode($json_store); 

測試這一點的方法是看是否執行以下操作刪除括號:

$json_encode($json_store[0]) 

如果是這樣,你一個不必要的嵌套數組,你應該修復。使用上面的代碼可能應該避免,因爲最好先解決數據存儲的問題。