Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件上载将字符串数据转换为json数据javascript_Javascript_Jquery_Html_Json - Fatal编程技术网

文件上载将字符串数据转换为json数据javascript

文件上载将字符串数据转换为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

我正在加载一个json数据文件,数据被读取为字符串。我试图使用JSON.parse将该字符串转换为JSON对象,但它仍然是字符串

这是JSON文件

{
    "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