使用特殊字符 \" 在 Javascript 中提取 JSON 值
Extracting JSON value in Javascript with special character \"
我如何从下面的 json 中提取 text,因为它包含 \" 它给了我一个未定义的
{
"answers":[
{
"questions":[ ],
"answer":"{\"text\":\"I am Ellina. I can't believe you forgot my name\",\"speech\":\"I am Ellina. I can't believe you forgot my name\"}",
"score":100,
"id":106,
"source":"Editorial",
"metadata":[
],
"context":{
"isContextOnly":false,
"prompts":[
]
}
}
],
"debugInfo":null,
"activeLearningEnabled":false
}
i tried using console.log(Answer:
${JSON.stringify(res.data.answers[0].answer.text)}
); and also
console.log(Answer: ${res.data.answers[0].answer.text}
);
answer
的值是一个 字符串 。
它不是一个对象,所以它没有 text
属性(这就是为什么它是 undefined
)。
好像是JSON,可以解析一下:
const answer = JSON.parse(es.data.answers[0].answer);
const text = answer.text;
请注意,JSON 文本中的一个值是另一个 JSON 文本的字符串表示形式是 非常糟糕的数据格式设计的一个好兆头。
更改 API 使其 returns answer
作为对象而不是 JSON 表示对象将是更好的方法。
您将必须执行以下操作 -
let parsed = JSON.parse(input.answers[0].answer);
其中输入是您提供的 json。此外,如果你有一个长列表并且你希望 json 被自动解析,那么你可以这样做 -
input.answers = input.answers.map((answer)=>{
answer.answer = JSON.parse(answer.answer);
return answer;
})
以上代码会自动将您的 json 字符串转换为已解析的 JSON。
let input = {
"answers": [{
"questions": [],
"answer": "{\"text\":\"I am Ellina. I can't believe you forgot my name\",\"speech\":\"I am Ellina. I can't believe you forgot my name\"}",
"score": 100,
"id": 106,
"source": "Editorial",
"metadata": [
],
"context": {
"isContextOnly": false,
"prompts": [
]
}
}],
"debugInfo": null,
"activeLearningEnabled": false
}
console.log(input);
input.answers = input.answers.map((answer) => {
answer.answer = JSON.parse(answer.answer);
return answer;
});
console.log(input);
我如何从下面的 json 中提取 text,因为它包含 \" 它给了我一个未定义的
{
"answers":[
{
"questions":[ ],
"answer":"{\"text\":\"I am Ellina. I can't believe you forgot my name\",\"speech\":\"I am Ellina. I can't believe you forgot my name\"}",
"score":100,
"id":106,
"source":"Editorial",
"metadata":[
],
"context":{
"isContextOnly":false,
"prompts":[
]
}
}
],
"debugInfo":null,
"activeLearningEnabled":false
}
i tried using console.log(
Answer: ${JSON.stringify(res.data.answers[0].answer.text)}
); and also console.log(Answer: ${res.data.answers[0].answer.text}
);
answer
的值是一个 字符串 。
它不是一个对象,所以它没有 text
属性(这就是为什么它是 undefined
)。
好像是JSON,可以解析一下:
const answer = JSON.parse(es.data.answers[0].answer);
const text = answer.text;
请注意,JSON 文本中的一个值是另一个 JSON 文本的字符串表示形式是 非常糟糕的数据格式设计的一个好兆头。
更改 API 使其 returns answer
作为对象而不是 JSON 表示对象将是更好的方法。
您将必须执行以下操作 -
let parsed = JSON.parse(input.answers[0].answer);
其中输入是您提供的 json。此外,如果你有一个长列表并且你希望 json 被自动解析,那么你可以这样做 -
input.answers = input.answers.map((answer)=>{
answer.answer = JSON.parse(answer.answer);
return answer;
})
以上代码会自动将您的 json 字符串转换为已解析的 JSON。
let input = {
"answers": [{
"questions": [],
"answer": "{\"text\":\"I am Ellina. I can't believe you forgot my name\",\"speech\":\"I am Ellina. I can't believe you forgot my name\"}",
"score": 100,
"id": 106,
"source": "Editorial",
"metadata": [
],
"context": {
"isContextOnly": false,
"prompts": [
]
}
}],
"debugInfo": null,
"activeLearningEnabled": false
}
console.log(input);
input.answers = input.answers.map((answer) => {
answer.answer = JSON.parse(answer.answer);
return answer;
});
console.log(input);