javascript - JSON.parse 返回错误

标签 javascript json angular typescript

这是我在尝试运行 JSON.parse 之前返回的 JSON.stringify

{"id":"2","name":"<small>L</small>(+)-Amethopterin Hydrate","class":"6.1","subclass":"","packing_group":"III","un":"2811","cas":"133073-73-1","poisons":"","hazardous":"Yes","restricted":"No","epa":"","added_by":"0","carcinogen":null},
{"id":"3","name":"(+)-Biotin 4-Nitrophenyl ester","class":"","subclass":"","packing_group":"","un":"","cas":"33755-53-2","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null},
{"id":"4","name":"(+)-Biotin N-hydroxysuccinimide ester","class":"","subclass":"","packing_group":"","un":"","cas":"35013-72-0","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}

当我尝试 JSON.parse 时,我得到Unexpected end of JSON input。我无法将其作为 JSON 对象进行访问,因为它会显示 can't Define id 或某种程度的内容。



JSON.parse(this.searchService.searchJson(this.php_url));

this.searchService.searchJson(this.php_url) 基本上就是我的 JSON 字符串。给出如上所述的错误。



此外,如果我只是尝试对 3 个元素中的 1 个进行字符串化,它会给我 JSON 中位置 0 处的意外标记 u



调用函数:

searchJson(url: any): any 
{   
    let items: any = []; 
    let new_data: any = []; 
    $.getJSON(url , 
        function(data)
        {   
            let temp_items: any = {}; 
            console.log(data);
            $.each(data, function (key, val)
            {   
                new_data.push(JSON.stringify(val));
            }); 
        }); 
    return new_data;
} 

最佳答案

你必须用[]包裹它,因为那是一个对象数组:

const data = [{"id":"2","name":"<small>L</small>(+)-Amethopterin Hydrate","class":"6.1","subclass":"","packing_group":"III","un":"2811","cas":"133073-73-1","poisons":"","hazardous":"Yes","restricted":"No","epa":"","added_by":"0","carcinogen":null}, {"id":"3","name":"(+)-Biotin 4-Nitrophenyl ester","class":"","subclass":"","packing_group":"","un":"","cas":"33755-53-2","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}, {"id":"4","name":"(+)-Biotin N-hydroxysuccinimide ester","class":"","subclass":"","packing_group":"","un":"","cas":"35013-72-0","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}]

console.log(data); 将返回 [Object, Object, Object]

或者如果您想作为 JSON 字符串进行处理,您应该这样做:

const data = '[{"id":"2","name":"<small>L</small>(+)-Amethopterin Hydrate","class":"6.1","subclass":"","packing_group":"III","un":"2811","cas":"133073-73-1","poisons":"","hazardous":"Yes","restricted":"No","epa":"","added_by":"0","carcinogen":null}, {"id":"3","name":"(+)-Biotin 4-Nitrophenyl ester","class":"","subclass":"","packing_group":"","un":"","cas":"33755-53-2","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}, {"id":"4","name":"(+)-Biotin N-hydroxysuccinimide ester","class":"","subclass":"","packing_group":"","un":"","cas":"35013-72-0","poisons":"","hazardous":"No","restricted":"No","epa":"","added_by":"0","carcinogen":null}]'

JSON.parse(data) 也会返回 [Object, Object, Object]

关于javascript - JSON.parse 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41052941/

相关文章:

node.js - Heroku 部署结束时出现错误 npm ERR! 404 未找到 : event-stream@3. 3.6

java - 解析数据 data.JSONException : A JSONObject text must begin with '{' at 1 [character 2 line 1] 时出错

javascript - 在使用 Angular 删除文件时选择所有复选框时出现问题

javascript - 地址栏显示和不显示时的全尺寸弹出窗口 - 移动版 chrome

用于删除给定域内所有 cookie 的 JavaScript 书签

javascript - 如何在传单上加载 json 文件并设置样式?

Angular 2 如何创建嵌套结构?

angular - Firestore valueChanges() 在使用 take(1) 时仅发出一次

javascript - 查找数组中最接近的匹配对

javascript - 如何使用mongoose计算mongodb集合文档中的字段总和