使用php将javascript对象附加到json文件

时间:2016-06-02 04:12:12

标签: php arrays json object

我有这个任务,我用表单创建一个js对象,然后将这些数据保存到json文件。我目前所拥有的是执行此操作的代码,如果文件已存在,则将新数据附加到文件中。唯一的问题是数据作为数组附加,但我需要它作为一个对象附加在一个主数组中。

这是输出(示例)

[
  [
    {
        "campaignId": "campaign1",
        "id": "c1"
    }
  ],
  [
    {
        "campaignId": "campaign2",
        "id": "c2"
    }
  ]
]

但我需要的是

[
  {
     "campaignId": "campaign1",
     "id": "c1"
  },
  {
     "campaignId": "campaign2",
     "id": "c2"
  }
]

我不是一个php开发人员所以我的PHP知识相当有限,我正在通过这个任务搜索我的方式,但我已经到了谷歌让我失望的地步。

这是我的PHP代码

<?php

$json = $_POST['json'];
$name = $_POST['name'];
$cat = $_POST['category'];

// make requested directory
// to see if directory exists

$filename = "savedData/$cat/";

if (file_exists($filename)) {
   //echo "The directory {$dirname} exists";
} else {
   mkdir($filename, 0777);
   echo "The directory {$dirname} was successfully created.";
}

$file = "savedData/$cat/$name.json";

// Append new form data in json string saved in text file

$json = json_decode($json);

$formdata = array(
  $json
);

$arr_data = array();        // to store all form data

// check if the file exists
if(file_exists($file)) {
  // gets json-data from file
  $jsondata = file_get_contents($file);

  // converts json string into array
  $arr_data = json_decode($jsondata, true);
}

// appends the array with new form data
$arr_data[] = $formdata;

// encodes the array into a string in JSON format (JSON_PRETTY_PRINT - uses whitespace in json-string, for human readable)
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);

// saves the json string in $file
// outputs error message if data cannot be saved
if(file_put_contents($file, $jsondata)) echo 'Data successfully saved';

?>

我热衷于如何解决这个问题,更重要的是要了解如何解决这个问题以获得所需的输出,任何帮助都会很棒:)

1 个答案:

答案 0 :(得分:1)

$json放在数组中

$formdata = array(
  $json
);

然后你把它放在另一个数组里面

$arr_data[] = $formdata;

相当于

$arr_data = array(
  array($json)
);

请改为尝试:

$arr_data[] = $json;