簡體   English   中英

如何在 JSON 響應中返回數組而不是對象?

[英]How to return an array instead of object in JSON response?

我有一個使用 Slim PHP 框架開發的有效 REST API。

它工作得很好。

唯一的問題是當不存在錯誤時,即數組$errors為空時,它作為 JSON 響應中的數組$errors但當數組$errors包含任何錯誤時,如$errors['user_name']那么它作為 JSON 中的對象出現回復。

實際上我想在出現錯誤時返回數組。 我該怎么做? 有人可以在這方面幫助我嗎?

提前致謝。

當您的$errors不為空時,通過json_encode傳遞它並回顯它。 它會給你 JSON 對象作為回報,然后將 JSON 對象轉換為 JavaScript 數組。 (請參閱以下代碼。)

var o = {"0":"1","1":"2","2":"3","3":"4"}; // your response object here 

var arr = Object.keys(o).map(function(k) { return o[k] });

console.log(arr);

最近有一個與 Symfony 的JsonResponse::create()密切相關的問題

原來索引不是從 0 開始的數組將被編碼到對象中,以及帶有 "holes" 的數組,可能還有至少一個非 int key 的任何數組。

換句話說,除了從索引 0 開始的連續數字鍵之外的任何其他數組似乎都被編碼為對象。

我猜這是為了避免在您映射具有大索引(如 [14334、839493、246193])的少量數據時發送大的空數組,並且可能在某處記錄。

歡迎從評論中了解這是否是 json_encode 行為的 Symfony 補充:)


注意:即使您返回一個數組,似乎也有必要將其包裝在一個對象中以供 GET 請求使用,以防止某些 XSSI 和 JSON-JavaScript 劫持

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM