为什么我的 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);

我的对象键的值在解析后未定义。如何成功解析和访问我的对象键的值?

  1. 你从一串代表一个对象的JSON开始(差点,末尾有一些无效数据)。
  2. 您使用 JSON.stringify 将其转换为代表 1.
  3. 中字符串的 JSON 字符串
  4. 您将它转换为一个文件,然后读取它以返回您在 2
  5. 处的字符串
  6. 您将该字符串解析为 JSON 以获取您在 1
  7. 处的字符串
  8. 您读取了 string
  9. 的对象键

即您正在将对象编码为 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));