如何字符串化循环 JSON 对象并将其保存到文件
How to stringify circular JSON object and save it to file?
我正在使用d3.js和jquery在javascript中处理径向树形图。我使用 json 文件将数据加载到 javascript var 中。在处理图表并进行一些更改(例如更改某些节点的父节点)后,我想将数据字符串化并另存为 json 文件。当我字符串化包含所有 json 数据的 treeData 变量并想要显示它时,我只收到字符串化的根节点。这是我的代码:
var json = JSON.stringify(treeData.children, function(key,value){
if(key == "children"){
return undefined;
}
return value;
});
alert("Json: " + json);
我也不知道为什么键设置为"孩子"。我的 JSON 文件结构:
{
"name": "root",
"children": [
{
"name": "child1",
"children": [ ... ]
}
]
}
你的对象文字中有一个children
键,所以它被传递给 callBack,然后由于某种原因你返回 undefined,这将从结果中删除该键。
循环 JSON 对象可以通过以下方式字符串化和保存:
import stringify from 'json-stringify-safe';
import fs from 'fs';
const content = stringify(myCircularJSONObject);
fs.writeFile('./data.json', content, ()=>{console.log('CREATED')});
问题是使用树数据将返回循环和循环数据错误。将密钥从"子项"切换到"父项"会给出一个不引用父项的 json,并且可以正常工作。
如果我理解正确,您正在尝试实现结构为:
var obj = {};
obj.circle = obj;
var str = JSON.stringify(obj);
// → Error
此对象将使用 JSON.stringify 返回错误,尽管在其他方面有效。如果你不介意字符串化对象的可读性,我建议使用 CircularJSON:
使用 Node.js 时安装:
npm install --save circular-json
针对网络安装:
<script src="build/circular-json.js"></script>
和用法:
var object = {};
object.arr = [
object, object
];
object.arr.push(object.arr);
object.obj = object;
var serialized = CircularJSON.stringify(object);
// → '{"arr":["~","~","~arr"],"obj":"~"}'
var unserialized = CircularJSON.parse(serialized);
// → { arr: [ [Circular], [Circular] ], obj: [Circular] }
相关文章:
- 将对象动态插入到现有对象中
- 将值传递到服务器对象
- 仅使用文件对象选择单个文件
- 将Windows文件路径组织到文件夹中
- 属性未添加到JS对象
- 如何字符串化循环 JSON 对象并将其保存到文件
- 如何将非常大的内存中对象保存到文件
- 如何将 Javascript 文件对象 + 数据发送到 MVC 6 控制器 - ASP.NET 5.
- 如何将图像源绑定到角度文件对象
- 正在将JSON文件中的数据加载到Javascript对象中
- 将文件对象从Javascript传递到Web API
- 如何将文件对象添加到javascript对象中
- 在JavaScript中引用SVG文件到SVG对象
- 如何将文件对象附加到html元素
- 将文件中的另一个对象添加到Javascript对象数组中
- 从内容脚本传递文件对象到后台.js或传递 createObjectURL(并在刷新后保持活动状态)
- 如何在php中回显js变量,然后将php文件附加或包含到HTML对象中
- 将Javascript文件对象保存到本地存储
- 用nodejs附加json对象到文件
- 将 JSON 文件加载到 JS 对象中