为什么我的 JSON 对象键的值未定义?
Why are the values of my JSON objects keys undefined?
我需要解析 JSON,但对象键的值未定义:
const MY_JSON_FILE = "{ \"version\": \"1.0\", \"result\": 4, \"id\": \"1\" }\x00"
let json = JSON.stringify(MY_JSON_FILE);
const blob = new Blob([json], {type:"application/json"});
const fr = new FileReader();
var res;
fr.onload = () => {
console.log('done', fr.readyState);
console.log('reader result: ', fr.result);
res = JSON.parse(fr.result);
console.log(Object.keys(res));
console.log('parsed: ' + res);
console.log(res.id);
console.log(res.result);
console.log(res.version);
}
fr.readAsText(blob);
我的对象键的值在解析后未定义。如何成功解析和访问我的对象键的值?
- 你从一串代表一个对象的JSON开始(差点,末尾有一些无效数据)。
- 您使用
JSON.stringify
将其转换为代表 1. 中字符串的 JSON 字符串
- 您将它转换为一个文件,然后读取它以返回您在 2
处的字符串
- 您将该字符串解析为 JSON 以获取您在 1
处的字符串
- 您读取了 string
的对象键
即您正在将对象编码为 JSON 两次 并仅将其解码 一次 然后尝试处理 JSON 的字符串作为 JSON 代表的对象。
从原始字符串中删除无效数据并将步骤 4 中的 JSON 解析为一个对象……最好完全跳过步骤 2 和 3。
const MY_JSON_FILE = "{ \"version\": \"1.0\", \"result\": 4, \"id\": \"1\" }"
const data = JSON.parse(MY_JSON_FILE);
console.log(Object.keys(data));
我需要解析 JSON,但对象键的值未定义:
const MY_JSON_FILE = "{ \"version\": \"1.0\", \"result\": 4, \"id\": \"1\" }\x00"
let json = JSON.stringify(MY_JSON_FILE);
const blob = new Blob([json], {type:"application/json"});
const fr = new FileReader();
var res;
fr.onload = () => {
console.log('done', fr.readyState);
console.log('reader result: ', fr.result);
res = JSON.parse(fr.result);
console.log(Object.keys(res));
console.log('parsed: ' + res);
console.log(res.id);
console.log(res.result);
console.log(res.version);
}
fr.readAsText(blob);
我的对象键的值在解析后未定义。如何成功解析和访问我的对象键的值?
- 你从一串代表一个对象的JSON开始(差点,末尾有一些无效数据)。
- 您使用
JSON.stringify
将其转换为代表 1. 中字符串的 JSON 字符串
- 您将它转换为一个文件,然后读取它以返回您在 2 处的字符串
- 您将该字符串解析为 JSON 以获取您在 1 处的字符串
- 您读取了 string 的对象键
即您正在将对象编码为 JSON 两次 并仅将其解码 一次 然后尝试处理 JSON 的字符串作为 JSON 代表的对象。
从原始字符串中删除无效数据并将步骤 4 中的 JSON 解析为一个对象……最好完全跳过步骤 2 和 3。
const MY_JSON_FILE = "{ \"version\": \"1.0\", \"result\": 4, \"id\": \"1\" }"
const data = JSON.parse(MY_JSON_FILE);
console.log(Object.keys(data));