如何为json对象中的未定义项分配(添加)值

时间:2017-07-08 07:14:09

标签: javascript json object

我有一个外部json文件,我将其解析为本地对象, 目前我知道我不能将值推送到对象中,所以我想在这里为它们分配一个值是我的代码:

//I parse my JSON into object and name it data
var data = {
  ...
}
// I use this object as a database so I don't list it all out
var name = "title";
var content = "hello guys";
data[name] = content;
// I wish after this script the object will have one more item like
// {
//  ...
//  "title": "hello guys",
//  ...
//}

但是当我运行脚本时,vscode的控制台显示以下错误

TypeError: Cannot set property 'title' of undefined

如果您可以为未定义的对象赋值,那么如何将项目添加到对象中。

但如果有任何方法可以让我为未定义的项目赋值,我会非常高兴

如果您需要

,这是完整的代码
var jsonfile = require('jsonfile')

var file = './test.json'
var data = jsonfile.readFileSync(file); //I'm very sure data isn't undefined
//console.log(data);
var name="title";
var content="hello guys";
data.post[name] = content;

jsonfile.writeFileSync(file, tmd, {spaces: 4});

2 个答案:

答案 0 :(得分:1)

当前data = undefined并且您正在尝试访问undefined中的密钥,这就是您收到错误的原因,如果未定义数据,则需要为数据分配空对象。你可以这样做:

var data = data || {};
var name = "title";
var content = "hello guys";
data[name] = content;

答案 1 :(得分:0)

可能数据没有名为'post'的键。 试试这个:

itrationFunctio(k,x,lambda)

编辑: 我知道这是旧的,但也许它会帮助某人。 这里https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options表示readFileSync返回的字符串不是数据结构。