在 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]);
我在自定义节点 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]);