![](/img/trans.png)
[英]How do I return a Laravel Http response as a json object instead of an array?
[英]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.