在 PHP 中显示来自 JSON 的单个数组项(NODE.JS 和 EXPRESS API)

Displaying a single array item from JSON in PHP (NODE.JS and EXPRESS API)

我在自定义节点 API 上安装了 Express 运行,可将大的 JSON 分解成小块供移动设备使用。

其中一个部分涉及大量项目,returns 仅涉及其中一项。然而,返回的数据仍然包含在 [ .. ] 中,这使得使用它变得困难。

我的 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));
});

但是返回的对象还在[ ]

试试这个:

 function toObject(arr) {
  var obj = {};
  for (var i = 0; i < arr.length; ++i)
    obj[i] = arr[i];
  obj rv;
}

当然,[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;
}

如果我没理解错的话,我认为最简单的方法是使用索引获取数组中的元素

res.json(with_operatorCode[0]);