SyntaxError: Unexpected token p in JSON at position 3
at JSON.parse (<anonymous>)
请有人帮我解决这个问题,我特此粘贴我的代码,请帮助。
ts代码:
Surveypost = () => {
let token = this.auth.getAccessTokenId();
console.log(token)
let currentUser = this.auth.getCurrentUserData();
console.log(this.editor.text)
console.log(this.survey_val)
// let survey_json = JSON.parse(this.editor.text);
let survey_json:any;
try{
survey_json = JSON.parse(this.editor.text);
} catch(e) {
/*Handle the error scenario here*/
}
let survey_data = {
"value": survey_json,
};
console.log(survey_data)
this.AdminAPI
.createandSet(survey_data, token)
.subscribe(
survey => {
console.log(survey)
}, error => {
console.log(error);
}
);
}
我得到安慰输出,直到console.log(this.editor.text)
,然后出现错误。
console.log(this.editor.text)的安慰输出就像这样开始,
{
pages: [
{
name: "page1",
elements: [
{
type: "radiogroup",
name: "price",
title: "How long have you been a customer at {companyname}?",
isRequired: true,
choices: [
{
value: "less",
text: "0 - 3 months."
},
{
value: "medium",
text: "3 - 12 months."
},
{
value: "High",
text: "12 + months."
}
]
答案 0 :(得分:1)
this.editor.text
包含无效的JSON。
尝试解析该无效JSON时,会发生错误。因此,简而言之,以下行是崩溃的行:let survey_json = JSON.parse(this.editor.text);
从console.log(this.editor.text)
获取输出,通过JSON验证器/格式化程序运行它:
https://jsonformatter.curiousconcept.com/
然后你应该能够很容易地看到错误发生的原因,以及为什么程序无法解析JSON
在添加JSON时编辑
从上面提到的链接中可以看到,JSON无效,这就是该行错误消息的原因:let survey_json = JSON.parse(this.editor.text);
。
例如,基本JSON应具有以下结构:
{
"key" : "value",
"key2" : "value2"
}
您也没有正确结束JSON。我在这里将JSON格式化为有效的JSON:
{
"pages":[
{
"name":"page1",
"elements":[
{
"type":"radiogroup",
"name":"price",
"title":"How long have you been a customer at {companyname}?",
"isRequired":true,
"choices":[
{
"value":"less",
"text":"0 - 3 months."
},
{
"value":"medium",
"text":"3 - 12 months."
},
{
"value":"High",
"text":"12 + months."
}
]
}
]
}
]
}
答案 1 :(得分:0)
当您尝试解析从第三方源发送的某些文本时,最好使用try catch块包装解析逻辑。 但请记住,只有在修复远程源中的琐碎错误之后才能完成此操作(当然,如果您有访问权限)。
替换,
let survey_json = JSON.parse(this.editor.text);
用,
let survey_json;
try{
survey_json = JSON.parse(this.editor.text);
} catch(e) {
/*Handle the error scenario here*/
/*Lets assign an empty object(or possibly a default value) instead*/
survey_json = {};
}