【发布时间】:2019-02-21 13:40:42
【问题描述】:
我的问题是通过 PHP 以正确的方式将一些内容推送到 JSON 文件。我已经写了一些代码,但它不会工作。
这是我的代码:
//Get Form Data
$formdata_host = array (
'server' => array ( $Server => array(
array (
'svc' => $_POST['valservice'],
'id'=> 1
)
))
);
//Get data from existing json file
$jsondata = file_get_contents($filename_moni);
//converts json data into array
$arr_data = json_decode($jsondata, true);
//Push details data to array
array_push($arr_data,$formdata_host);
//Reindex the Array
$arr_data = array_values($arr_data);
//Convert updated array to JSON
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK);
//write json data into data.json file
if(file_put_contents($filename_moni, $jsondata)) {
echo 'Daten erfolgreich gespeichert!';
}
else
echo "Error";
}
catch (Exception $e) {
echo 'Ausnahme entdeckt: ', $e->getMessage(), "\n";
}
这是我执行后得到的 JSON 内容:
[
{
"server": {
"TEST": [
{
"svc": "TEST",
"id": 1
}
]
}
}
]
但我需要这个:
{
"server": {
"TESTSERVER": [
{"svc":"TESTSERVICE", "id":1}
]
}
}
我知道 [] 用于数组,而 {} 用于对象。 我首先需要一个 JSON-Object -> 服务器,然后是第二个 JSON-Object -> 主机名,然后是一个 JSON-Array,后面是几个填充了服务名称和 ID 的 JSON-Object。
我希望你能帮助我,因为这个问题现在让我发疯。
【问题讨论】:
-
$Server和$_POST['valservice']有什么价值?如果我查看您的预期结果与当前结果,代码似乎没有太大问题,但只是错误的值。 -
首先,您在输出中得到一个数组,因为您正在对一个数组进行 JSON 化。如果你想要一个对象,JSON 化一个对象。因此,您需要创建一个对象,在该对象上创建您想要输出的属性以及您想要输出的类型,然后对该对象进行 JSON 化。
-
将此
array_push更改为array_merge或array_replace并删除此array_values此外,您还缺少catch的try部分,这可能是一个错字或遗漏从问题。
标签: php arrays json file object