从JSON文件加载的对象返回与JS文件中声明的对象不同的结果

时间:2016-08-22 23:58:06

标签: javascript immutable.js

我正在尝试从json文件加载不可变对象。在需要它并将它输入到fromJS函数后,我得到了简单的JS对象而不是Immutable MAP。

我注意到当我在同一个文件中创建对象而不需要它时,它工作正常。

另外,我注意到在使用控制台日志时没有获得所需输出的对象:

jsonObj.json

{
    "im":"a json Object"
}

jsObj.js

export default {
    "im":"a js object"
}

test.js

从'immutable'导入{fromJS};

describe('immutable test', ()=>{
    it('should be able to load and parsed json from file',()=>{
        var json = require('./jsonObj.json');
        var js = require('./jsObj.js');
        console.log(json);//output: { im: 'a json Object' }
        console.log(js.default);//outputs: { im: 'a js object' }

        console.log(fromJS(json));//outputs: { im: 'a json Object' } 
        console.log(fromJS(js.default));//outputs: Map { "im": "a js object" }

      //if adding:
        JSON.parse(json);//throws: 
        // SyntaxError: Unexpected token o in JSON at position 1
        // at Object.parse (native)

    });
});

我正在使用:

不可变3.8.1

节点6.3.1

有任何帮助吗?感谢

1 个答案:

答案 0 :(得分:0)

您的代码效果很好。我复制了你的代码并得到了:

{ im: 'a json' }
{ im: 'a js object' }
Map { "im": "a json" }
Map { "im": "a js object" }

一旦您需要.json文件,它就会被解析并存储为Javascript object,而JSON.parse需要一个字符串,这不会引发错误:

JSON.parse(json);