文件上载将字符串数据转换为json数据javascript
我正在加载一个json数据文件,数据被读取为字符串。我试图使用JSON.parse将该字符串转换为JSON对象,但它仍然是字符串 这是JSON文件文件上载将字符串数据转换为json数据javascript,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我正在加载一个json数据文件,数据被读取为字符串。我试图使用JSON.parse将该字符串转换为JSON对象,但它仍然是字符串 这是JSON文件 { "annotations": { "a": [{ "AA00": [4.9724, 6.7862, 1.568737, 4.9943, 17.4203, 1.568737] }, { "AA01": [6.511
{
"annotations": {
"a": [{
"AA00": [4.9724, 6.7862, 1.568737, 4.9943, 17.4203, 1.568737]
},
{
"AA01": [6.5117, 17.4155, -1.572977, 6.5584, 6.7322, -1.572977]
},
{
"AA02": [7.7934, 6.7196, 1.575093, 7.7473, 17.4463, 1.575093]
},
{
"AA03": [9.7196, 17.3718, -1.563688, 9.7145, 9.6473, -1.563688]
},
{
"AA04": [12.2965, 24.9181, -1.558673, 12.4939, 11.9399, -1.558673]
}
]
,
"p": [{"HOME": [9.60, 6.22, 0.0]}]
}
}
jquery代码;-
$('#annotation-file-upload').on('change', function(){
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
console.log(typeof reader.result)
annotationsObject = JSON.parse(JSON.stringify(reader.result))
console.log(annotationsObject)
console.log(typeof annotationsObject)
};
reader.readAsText(this.files[0])
}
})
您当前正在使用
annotationsObject = JSON.parse(JSON.stringify(reader.result))
但是reader.result
已经是一个string
——对它调用stringify
没有任何意义。您的输出将只是您的输入,字符串。相反,只解析字符串,而不首先进行字符串化:
document.querySelector('input').addEventListener('change',function(){
if(this.files&&this.files[0]){
var reader=new FileReader();
reader.onload=函数(e){
console.log(reader.result的类型)
annotationsObject=JSON.parse(reader.result);
console.log(注释对象)
console.log(注释对象的类型)
};
reader.readAsText(此.files[0])
}
});代码>
JSON,Javascript对象表示法,始终是一个字符串。如果它是一个对象,那么它不是Javascript对象表示法中的字符串,它只是一个普通对象。谢谢。我能把它转换成Javascript对象吗?我认为JSON.parse会帮我做到这一点。console.log()的两个类型告诉你什么?它们都告诉我它是一个字符串。你为什么对字符串调用JSON.stringify()
“你的输出将只是你的输入”。我认为那不是真的。它将转义引号并生成一个带引号的字符串,当您JSON.parse
时,它将返回原始字符串。这就是为什么typeof
调用都返回string
。是的,措辞没有那么精确,我的意思是JSON.parse(JSON.stringify(reader.result))
将只返回初始的reader.result