将javascript变量写入.json文件

时间:2019-12-03 08:41:42

标签: javascript php json

我在javascript中有一个变量,其中包含json记录的结构。是否可以创建并将其写为.json?谁能给我一个例子?我怀疑我需要使用php,但找不到类似的示例。

来自我的名为canvasJS.js的javascript文件:

     var delayInMilliseconds = 1000; //1 second
  setTimeout(function() {

    seq["canvases"] = allCanvases;
    var jarraySeq = [];
    jarraySeq.push(seq);


    obj["sequences"] = jarraySeq;


  }, delayInMilliseconds);

  console.log(obj);
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("POST", "/json.php");
  xmlhttp.setRequestHeader("Content-Type", "application/json");
  xmlhttp.send(JSON.stringify(obj));

这是我的json.php文件-

 <?php
debug_to_console("test");
$json = file_get_contents('php://input');
file_put_contents('file.json', $json);

function debug_to_console($data) {
    $output = $data;
    if (is_array($output))
        $output = implode(',', $output);

    echo "<script>console.log('Debug Objects: " . $output . "' );</script>";
}


?>

但是我无法创建file.json,也无法在控制台中得到错误。知道为什么吗?

2 个答案:

答案 0 :(得分:0)

这就是我要做的

javascript

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "http://localhost/json-writer.php");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify({prop:"value"}))

php

$json = file_get_contents('php://input');
file_put_contents('file.json', $json);

答案 1 :(得分:-1)

可以将javascript对象作为json记录写入.json文件:  1.假设存在一个包含json记录的对象:

var object = {
  // data inside
}

  1. 将此JSON对象转换为字符串:

var jsonString = JSON.stringify(object)

  1. 我们可以使用文件系统模块将文件写入存储位置:

var fs = require('fs');
fs.writeFile('filename.json', jsonString, callback)

默认字符编码为utf8,否则可以指定编码格式:(以上代码与之相同)

fs.writeFile('filename.json', jsonString, 'utf8', callback);

可以通过fs对象的回调函数来处理任何错误。例如:

fs.writeFile('filename.json', jsonString, (err) => {
  if (err) throw err;
  console.log('File saved successfully!');
});

  1. 要对同一文件进行更改(例如追加数据),可以读取该文件,将JSON字符串解析回对象,进行所需的更改,然后将其编码回JSON字符串:

fs.readFile('filename.json', 'utf8', callback);

readFile回调的格式为:(error, data)data是文件的内容。这种方法可以像这样使用:

fs.readFile('filename.json', 'utf8', (error, data) => {
  if (error){
    console.log(error);
  } else {
    object = JSON.parse(data); //parse JSON string to object
    // make changes to object
    jsonString = JSON.stringify(obj); //encode object back to JSON string
    fs.writeFile('filename.json', jsonString, 'utf8', callback); // over-write the json file
  }
});

writeFile回调可以处理写入期间的任何错误:

    fs.readFile('filename.json', 'utf8', (error, data) => {
      if (error){
        console.log(error);
      } else {
        object = JSON.parse(data); //parse JSON string to object
        // make changes to object
        jsonString = JSON.stringify(obj); //encode object back to JSON string
        fs.writeFile('filename.json', jsonString, 'utf8', (err) => {
          if (err) throw err;
          console.log('File saved successfully!');
        }); // over-write the json file
      }
    });    

您可以参考File System API documentation以获得有关此内容的更多详细信息。