我正在尝试创建一个 JSON 数据文件,但是当我推送该对象时,它会在应有的位置之外创建另一个元素。
这是运行代码后 JSON 的样子:
{
"level": [
{
"6": {
"TitleEng": "Some English Title",
}
},
{
"7": {
"TitleEng": "Some English Title",
}
}
]
}
JSON 应该是这样的:
{
"level": [
{
"6": {
"TitleEng": "Some English Title",
},
"7": {
"TitleEng": "Some English Title",
}
}
]
}
我使用以下代码创建对象:
$.getJSON( "json/levels.json", function( levels ) {
obj[lvl] = {
"TitleEng": titleEng,
};
levels.level.push(obj);
$.post("php/upload_level.php", {json : JSON.stringify(levels)});
});
PHP代码如下:
<?php
$json = $_POST['json'];
if (json_decode($json) != null) {
$file = fopen('../json/levels.json','w');
fwrite($file, $json);
fclose($file);
} else {
echo "error writing file";
}
?>
为了解决该问题,我尝试更改 level.level.push(obj); 到 level.level[0].push(obj); 为了将级别保持在级别对象内,但这不起作用。任何帮助将不胜感激。谢谢
最佳答案
var obj = {
"level": [
{
"6": {
"TitleEng": "Some English Title",
},
"7": {
"TitleEng": "Some English Title",
}
}
]};
向 obj 添加一个新的
obj.level[0][8]= {
"TitleEng": "Some other English Title",
}
所以 obj 将是
{
"level": [
{
"6": {
"TitleEng": "Some English Title",
},
"7": {
"TitleEng": "Some English Title",
},
"8" :{
"TitleEng": "Some other English Title",
}
}
]}
关于Javascript 将对象插入特定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30618774/