我正在尝试从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
有任何帮助吗?感谢
答案 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);