如何将Javascript对象保存到文件?

时间:2012-09-26 08:14:25

标签: javascript

我需要将复杂的javascript对象保存到文件中以供日后调查。 这是一个非常大的对象,超过50种方法和属性。

我可以在DOM页面上的Firefox-Firebug中看到对象及其方法和属性(及其值),但我无法将其保存到文件中。

我希望使用当前属性值保存对象,而不是HTML文档。 任何格式的文件 - HTML或JSON或其他任何对我都有好处:)

如何保存对象?

4 个答案:

答案 0 :(得分:7)

嗯......你可以做些什么,但我不能说有多丑。 你可以做点什么

JSON.stringify(my_big_javascript_object)然后将生成的JSON(纯文本)保存在文件中。

您可以稍后使用某些JSON查看器查看值,例如http://jsonviewer.stack.hu/

答案 1 :(得分:1)

您可以使用AJAX(jQuery)将对象从您的页面传递到服务器端脚本:

var ajax_object // Your object    

.ajax({
    type: "POST",
    url: "tofile.php",
    data: ajax_object,
});

然后使用服务器端脚本将其写入HTML文件(示例使用PHP):

// File: tofile.php

$ajax_object // Object, which You have passed using AJAX

ob_start();
print_r("<pre>".print_r($ajax_object, true)."</pre>");
$var = ob_get_contents();
ob_end_clean();
$fp = fopen('somefile.htm', 'w');
fputs($fp, $var);
fclose($fp);

somefile.htm中的输出与此类似:

Some_Object Object
(
    [some_element] => 123
    [some_array] => Array
        (
            [element1] => 456
            [element2] => 789
            [element3] => 012
        )
)

如果您想知道如何仅使用Javascript将对象保存到文件,而不使用服务器端语言,那么,我担心,这是不可能的。

答案 2 :(得分:1)

这适合我。

//Initialization of object to save
var objectToSave={first:'string', second: function(){}};
//Start of saving method
var textToSave='';//String to be saved
var count=0;
for(var i in objectToSave){
//Adding every key name + type + text value to string
textToSave+=objectToSave[i].constructor.name+' '+ Object.keys(objectToSave)[count]+' = '+objectToSave[i]+'\n';
count++;
}
//Saving string to file using html clicking trick
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'myFile.txt';
hiddenElement.click();

此方法的结果是使用text:

保存的txt文件
  

String first = string

     

功能second = function(){}

答案 3 :(得分:0)

现在可以使用Blob API:

  function downloadObject(obj, filename){
    var blob = new Blob([JSON.stringify(obj, null, 2)], {type: "application/json;charset=utf-8"}).slice(2,-1);
    var url = URL.createObjectURL(blob);
    var elem = document.createElement("a");
    elem.href = url;
    elem.download = filename;
    document.body.appendChild(elem);
    elem.click();
    document.body.removeChild(elem);
  }

您可以在此处详细了解:https://developer.mozilla.org/en-US/docs/Web/API/Blob

它要求你有一个带有实时DOM的网页,如果你正在调试页面上的javascript,它应该可以工作。