因此,我尝试将新记录添加到我的JSON文件中,但是当我对文件进行编码时,会得到\
和\n
一堆。我该如何删除那些?
JSON
{
"clients": [
{
"id": 1,
"name": "Name",
"description": "XXX",
"services": [
{
"name": "dddd",
"host": "ddddddd",
"login": "ddddd",
"password": "ddddd"
},
{
"name": "dddd",
"host": "ddddddd",
"login": "ddddd",
"password": "ddddd"
}
]
}
]
}
PHP
$inp = file_get_contents('app/keyring.json');
$tempArray = json_decode($inp);
$data = '{
"id": 5,
"name": "dddd ddd",
"description": "ddd"
}';
array_push($tempArray->clients, $data);
$jsonData = json_encode($tempArray, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
file_put_contents('app/keyring.json', $jsonData);
这将导致:
"{\n \"id\": 5,\n \"name\": \"dddd ddd\",\n \"description\": \"ddd\"\n }"
答案 0 :(得分:2)
您正在将字符串而不是对象推入数组。它被双重转义,因此在解析文件时它仍然是字符串,因为这就是您编码的内容。改用它:
QString
或者,如果您实际上是在PHP中构建对象而不是从其他地方获取它作为JSON,则可以执行以下操作:
$data = json_decode('{
"id": 5,
"name": "dddd ddd",
"description": "ddd"
}');
array_push($tempArray->clients, $data);