我在堆栈中搜索了很多,谷歌试图找到答案,这似乎很容易,但我仍然坚持它。
我编写了一个代码,用我想要的值对json进行编码。我想给JSON添加一个键/值
JSON如下所示
{
- files: [
{
title: "works",
- tracks: [
{
title: "File",
format: "mp3"
}
]
},
-{
title: "season1",
tracks: [
{
title: "Button-1",
format: "wav"
},
-{
title: "Beep-9",
format: "wav"
}
]
}
]
}我想将一个键及其开头的值作为标题文件下的属性添加到json中,我的意思是可以通过代码将其读取为
jsonfiles
我试着像这样设定这个值
$json‘new_value’= "new_value";
但这会导致将数字添加到json中的数组中,我不知道它们为什么编号

这个数字影响了我在iOS应用程序中将json作为iOS的阅读方式,因此,我希望您能提前感谢我。
发布于 2014-01-30 21:55:16
假设要添加的新值因文件不同而有所不同,则需要遍历$json[files]并按键/值对插入它们。
<?php
for($i=0; $i<count($json); $i++)
$json[files][$i]["new_key"] = "value";
?>发布于 2014-01-30 22:05:23
出现数字的原因是在数组中添加了一个键(在JS中,数组的功能或多或少是一个列表)。因此,在您将对象“文件”作为对象列表之前,与任何其他JS数组一样,对象是零索引的。当您添加密钥时,JS只需将您的键添加到当前键的末尾(在您的示例中为0和1)。
看起来你有一个多媒体对象列表,每个对象都有一个标题和一个曲目列表。解决问题最直接的方法如下:
$fileItem['title'] = 'works';
$fileItem['tracks'] = array(
array(
'title' => 'File',
'format' => 'mp3'
)
);
$json['files'][] = $fileItem;
$fileItem['title'] = 'season1';
$fileItem['tracks'] = array(
array(
'title' => 'Button-1',
'format' => 'wav'
),
array(
'title' => 'Beep-9',
'format' => 'wav'
)
);
$json['files'][] = $fileItem;然后,您可以像往常一样对它进行编码并返回它。您也可以将上面的内容放在一个循环中。我缺乏足够的背景来推荐具体的方法。
发布于 2014-01-30 22:11:50
我仍然不确定您到底拥有什么,但似乎您正在试图操纵json字符串。
如果操作正确,这可能是最有效的解决方案,但您还可以做的是:
json_decode从json字符串生成一个数组;array_unshift预置新的键值对;json_encode从完整的数组生成json字符串。https://stackoverflow.com/questions/21468071
复制相似问题