php - Laravel - 排序后从集合中响应 JSON 将项目索引作为对象键

标签 php json laravel

我不知道是什么导致了这个问题,但下面是原始的 PHP 代码,它产生了想要的 JSON 格式:

PHP

return response()->json($model->things, 200);

JSON

[
    {...},
    {...},
    ...
]

但是,当我对集合进行排序时,JSON中的数组变成了一个对象。

PHP

return response()->json($model->things->sortBy("name"), 200);

JSON

{
    "0": {...},
    "1": {...},
    ...
}

我做错了什么吗?我在这两种情况下尝试了 dding 集合,但结果对我来说是一样的。

最佳答案

来自 laravel 文档:

The sortBy method sorts the collection by the given key. The sorted collection keeps the original array keys

所以在 sortBy() 之后你有这样的东西:

[2=>'val1', 1 => 'val2', 0 => 'val3']

它是关联数组,这解释了为什么在 json 中它变成了一个对象,为了防止这种情况,您需要像这样使用 values() 方法:

$model->things->sortBy("name")->values()->all()

第二个问题是为什么没有排序,可以看这个问题:json_encode not preserving order

关于php - Laravel - 排序后从集合中响应 JSON 将项目索引作为对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51313060/

相关文章:

java - 在 php 中创建 Java 日期时出错

java - 请放心 :Post request returning an error "The JSON input text should neither be null nor empty."

java - JSON - 测试没有值(value)

mysql - SQLSTATE [HY000] [1045] 拒绝用户 'root' @'172.19.0.4' 与 Docker 的访问

laravel - 是否有 Laravel 的 APP_ENV 变量(在 .env 文件中找到)的建议值列表?

php - 如何使用 phpunit 测试用例测试 ajax 调用?

php - Laravel 会自动关闭数据库连接吗?

django - WordPress 漂亮的永久链接故障转移 SSL - 404 文件不存在

javascript - 无法访问 JavaScript 对象属性

laravel - 从 Laravel API Router 查找 Controller 时出错