Отображение одного элемента массива из JSON в PHP (NODE.JS и EXPRESS API)

У меня есть Express, работающий на пользовательском API-интерфейсе узла, который разбивает большой JSON на куски размером в куски для мобильного использования.

Один из разделов просматривает массу предметов и возвращает только один из них. Однако возвращенные данные по-прежнему заключены в [..], что затрудняет работу с ними.

Мой фрагмент кода NODE.JS, относящийся к моему перенаправленному запросу

app.get('/ppm/detail/operators/:operatorCode', function (req, res) {
var with_operatorCode = ppm.RTPPMDataMsgV1.RTPPMData.OperatorPage.filter(function (item) {
return item.Operator.code === req.params.operatorCode;
});
res.json(with_operatorCode);
});

так что если вы получите доступ к URL

http://(domain)3000/ppm/summary/operators/25

следующие данные возвращаются

[
{
"code": "25",
"keySymbol": "",
"name": "First Great Western",
"Total": "577",
"PPM": {
"rag": "G",
"text": "94"},
"RollingPPM": {
"trendInd": "+",
"displayFlag": "Y",
"rag": "G",
"text": "97"}
}
]

Как я могу выделить этот объект из [..], чтобы он не возвращался как объект массива, а отображался только как

 {
"code": "25",
"keySymbol": "",
"name": "First Great Western",
"Total": "577",
"PPM": {
"rag": "G",
"text": "94"},
"RollingPPM": {
"trendInd": "+",
"displayFlag": "Y",
"rag": "G",
"text": "97"}
}

Альтернативно, как я могу работать с объектом [..] в PHP? Когда я пытаюсь повторить это с помощью

$operatorJSON=file_get_contents("operator.json");
$operator=json_decode($operatorJSON);

echo $operator->PPM->text;

Это ошибки, если JSON имеет []

Я подозреваю, что это рассматривается как объект массива

ОБНОВЛЕНИЕ: я попытался сгладить массив

app.get('/ppm/detail/operators/:operatorCode', function (req, res) {
var with_operatorCode = ppm.RTPPMDataMsgV1.RTPPMData.OperatorPage.filter(function (item) {
return item.Operator.code === req.params.operatorCode;
});

var obj = arr.reduce(function(x, y, i) {
x[i] = y;
return x;
}, {});

res.json(obj(with_operatorCode));
});

но возвращенный объект все еще находится в []

3

Решение

Если я правильно понимаю, я думаю, что самый простой способ — использовать индекс для получения элемента в массиве.

res.json(with_operatorCode[0]);
2

Другие решения

Конечно, [Foo] обозначает, что это массив.

Вы можете адресовать элемент как [0], но это, скорее всего, приведет к ошибке, если в фильтре нет элемента:

На стороне php:

$operator=json_decode($operatorJSON);
echo $operator[0]->PPM->text;

На стороне узла:

res.json(with_operatorCode[0]);

Разумнее было бы обрабатывать его как массив:

$operator=json_decode($operatorJSON);
if (is_array($operator) && count($operator))
{
echo $operator[0]->PPM->text;
}

Или, если фильтр может дать вам более одного:

$operator=json_decode($operatorJSON);
foreach ($operator as $op)
{
echo $op->PPM->text;
}
2

Попробуйте для этого:

 function toObject(arr) {
var obj = {};
for (var i = 0; i < arr.length; ++i)
obj[i] = arr[i];
obj rv;
}
0
По вопросам рекламы [email protected]