【发布时间】:2019-06-07 21:14:55
【问题描述】:
我有许多 JSON 文件,当其中只有一个对象时,它们的数据类型不一致。我正在尝试更改包含一项的文件,以便我引用的元素始终是一个数组。
这是一个“好”JSON 文件的示例:
{
"apiv2": {
"items": [{
"id": "00001",
"name": "ITEM 1"
}, {
"id": "00002",
"name": "ITEM 2"
}]
}
}
在 PHP 术语中,$json->apiv2->items 始终是一个数组,我可以对其应用相同的函数。
我经常有一个包含一项的 JSON 文件:
{
"apiv2": {
"items": {
"id": "00003",
"name": "ITEM 3"
}
}
}
当我尝试使用相同的函数遍历“项目”时,它们会失败,因为它现在是一个对象而不是一个数组。
我的目标是更改 JSON 数据并重写文件,使单项文件与多项文件保持一致:
{
"apiv2": {
"items": [{
"id": "00003",
"name": "ITEM 3"
}]
}
}
也许是因为现在是星期五下午,但我似乎无法理解这一点。我认为这很简单:
$json->apiv2->items = (array) $json->apiv2->items;
但这只是将它变成一个包含两个元素“id”和“name”的数组,而不是一个包含对象的元素。
【问题讨论】:
-
转换为数组的对象,将是具有对象属性的数组,但不是数组中的对象。
$json->apiv2->items = [$json->apiv2->items];呢? -
你不能用
true解码成数组吗,那样迭代的代码是一样的