我在堆栈中搜索了很多,并且google尝试找到答案,这似乎很容易,但我仍然坚持使用
我编写了一个代码,用我想要的值来编码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开头的值作为属性,我的意思是可以通过代码读取
JSON [文件] [new_key]
我试图像这样设置这个值
$ json ['new_key'] =“new_value”;
但是这会导致在json中向数组添加数字,我不知道它们为什么编号
这个数字会影响我在iOS应用中作为JSONModel的json阅读方式 所以,我希望你能帮助我 提前谢谢
答案 0 :(得分:0)
假设您要添加的新值因文件而异,您需要循环遍历$json[files]
并按键/值对插入它们。
<?php
for($i=0; $i<count($json); $i++)
$json[files][$i]["new_key"] = "value";
?>
答案 1 :(得分:0)
你出现数字的原因是因为你正在向一个数组添加一个键(它或多或少地作为JS中的列表运行)。所以在你基本上把对象“files”作为一个零索引的对象列表之前,就像任何其他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;
然后你JSON编码并像往常一样返回它。您也可以将上述内容放在循环中。我缺乏足够的背景来推荐具体方法。
答案 2 :(得分:0)
我仍然不确定你到底有什么,但似乎你正试图操纵json字符串。
如果操作正确,这可能是最有效的解决方案,但您还可以做的是:
json_decode
从您的json字符串生成数组; array_unshift
添加新的键 - 值对; json_encode
从完整数组中生成json字符串。