Заставьте Li3 возвращать результаты JSON в виде массива объектов, а не объекта объектов.

Я пытаюсь использовать результат JSON запроса GET для моего приложения Li3, но я хотел бы, чтобы результатом был массив возвращенных объектов JSON, а не объект объектов JSON.

В моем файле представления (index.html.php) есть следующий код:
print($todos->to('json'));

В результате каждая строка становится объектом JSON (хорошо), но внутри общего объекта JSON.

{
    "1": {
        "id": "1",
        "title": "One",
        "done": "0"
    },
    "2": {
        "id": "2",
        "title": "Two",
        "done": "0"
    },
    "3": {
        "id": "3",
        "title": "Three",
        "done": "0"
    },
    "4": {
        "id": "4",
        "title": "Four",
        "done": "0"
    }
}

Я хотел бы получить:

[
    {
        "id": "1",
        "title": "One",
        "done": "0"
    },
    {
        "id": "2",
        "title": "Two",
        "done": "0"
    },
    {
        "id": "3",
        "title": "Three",
        "done": "0"
    },
    {
        "id": "4",
        "title": "Four",
        "done": "0"
    }
]

Примечание. Я обнаружил, что это имело место (массив объектов) в коммите "974469cf25db5cbab61f3e1ff172405f2e" из литиевого проекта github, но с чем-либо после этой фиксации результатом будет объект объектов.


person Ryan Schie    schedule 04.01.2015    source источник


Ответы (2)


Попробуйте $todos->to('json', ['indexed' => false]) или обратитесь к классу Media для прямой сериализации JSON без шаблона.

person Nate Abele    schedule 05.01.2015

Todos::all(['return' => 'array'))->to('json'); отлично работает и с RecordSet

person AgBorkowski    schedule 21.01.2015