JSON Объект в строку с PHP / JavaScript - PullRequest
0 голосов
/ 08 июля 2019

У меня ниже объекта JSON, который публикуется с моего внешнего интерфейса на мой бэкэнд с Axios:

 this.columns = JSON.parse(this.columns);

Это может выглядеть так:

columns: {
    1: {
        position: "10"
    },
    2: {
        position: "35"
    },
    3: {
        position: "20"
    }
}

Теперь мне нужно отсортировать этот объект JSON на моем бэкэнде по убыванию position и , а затем преобразовать объект JSON в строку (поскольку я использую значения в другом входе командной строки) :

"{\"1\":{\"position\":\"10\"},\"2\":{\"position\":\"20\"},\"3\":{\"position\":\"35.00\"}}"

Я пытаюсь отсортировать это и затем преобразовать его в строку с PHP:

//Sort the columns
sort($this->columns);
$columns = json_encode($this->columns);

Но это возвращает столбцы в виде массива:

"[{"position":"10"},{"position":"20"},{"position":"35"}]"

Как мне отсортировать объект JSON, но вернуть его в виде строки, чтобы я мог использовать его в командной строке?

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Я думаю, это то, что вам нужно

Первый вариант:

json_encode($this->columns, JSON_FORCE_OBJECT);

Второй вариант

json_encode((object) $this->columns);

Это дает вам пример строки объекта Json:

{"0":{"position":"10"},"1":{"position":"20"},"2":{"position":"35"}}

Подумайте об Upvote, если вам поможет этот ответ

0 голосов
/ 08 июля 2019

Вы можете json_decode с истинным флагом и использовать array_multisort ,

$temp = json_decode($temp['columns'], true);
array_multisort(array_column($temp['columns'], "position"), SORT_ASC, $temp['columns']);
echo json_encode($temp['columns']);

Демо .

Вывод: -

[{"position":"10"},{"position":"20"},{"position":"35"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...