【问题标题】:How do I turn a JSON file into an arraylist如何将 JSON 文件转换为数组列表
【发布时间】:2019-06-21 03:02:40
【问题描述】:

我想将我的 JSON 文件转换为一个数组列表,然后我可以访问并使用它来显示网页上的信息。

我的 html 文件

var xmlhttp = new XMLHttpRequest();
 xmlhttp.onreadystatechange = function() {
 if(this.readyState == 4 && this.status == 200) {
    console.log(JSON.parse(this.responseText))
}
};
 xmlhttp.open("GET", "PATIENT51.txt", true);
 xmlhttp.send(); 

我的 JSON 文件

{
“resourceType”:”RiskAssessment”,
“Notes”: [
{“date”: “05/13/2019”, “note”: “my notes”},
{“date”: “02/22/2018”, “note”: “cool”}
]
}

我如何访问05/13/2019,我尝试过使用

myObj.Notes[0].note;

但结果是“未定义”,我希望能够使用日期制作表格 - 每个日期都会有一个与之关联的注释。

【问题讨论】:

  • JSON 表示 Notes 而不是 note。投票结束是一个错字。
  • 不应该是 myObj.Notes[0].note 吗? :D
  • 是的,在我的代码中就是这样,我在这里写的时候只是一个错字,对不起
  • 在@Intervalia 编辑引号之前,我将其回滚到编辑状态,因为这可能是您的问题的根源,为什么一切都未定义。

标签: javascript json


【解决方案1】:

不要使用平衡引号,或者在 json 中调用它们 “ and ” 不是有效的 JSON 聊天符。使用普通引号。 '"'

JSON.parse('{ \
“resourceType”:”RiskAssessment”, \
“Notes”: [ \
{“date”: “05/13/2019”, “note”: “my notes”}, \
{“date”: “02/22/2018”, “note”: “cool”} \
] \
}');

在 chrome 中为我提供了预期的错误:

VM18:1 Uncaught SyntaxError: Unexpected token “ in JSON at position 2
在 JSON.parse()
在 js:13

使用普通引号"

然后,当您在 console.log 中分析输出的对象时,您会看到您希望从中检索值的元素称为“注释”而不是注释。所以你需要使用myObj.Notes[0].note来访问你感兴趣的变量。

myObj = JSON.parse('{ \
"resourceType":"RiskAssessment", \
"Notes": [ \
{"date": "05/13/2019", "note": "my notes"}, \
{"date": "02/22/2018", "note": "cool"} \
] \
}');
console.log(myObj);
console.log(myObj.Notes[0].note);

如果您希望使用文件替换代码 sn-p 中的弯引号/平衡引号,您可以使用以下答案中的解决方案:https://stackoverflow.com/a/9401374/1356107

var xmlhttp = new XMLHttpRequest();
 xmlhttp.onreadystatechange = function() {
 if(this.readyState == 4 && this.status == 200) {
    console.log(JSON.parse(this.responseText.replace(/[\u2018\u2019\u201C\u201D]/g, '"')));
}
};
 xmlhttp.open("GET", "PATIENT51.txt", true);
 xmlhttp.send(); 

但理想情况下,您应该让生成 PATIENTS1.txt 的任何内容都使用普通引号而不是平衡引号。

【讨论】:

  • 有什么办法可以用文件而不是直接解析它? @Tschallacka
  • @jenna 如果是因为引号,您可以在解析之前进行字符串替换。 your_string.replace(/[\u2018\u2019\u201C\u201D]/g, '"');stackoverflow.com/questions/9401312/… 因此,在您的响应处理程序中的示例中,它将是 console.log(JSON.parse(this.responseText.replace(/[\u2018\u2019\u201C\u201D]/g, '"')))
  • 我仍然想解析它我只是想能够解析来自外部源的文件
  • @jenna 我修改了我的评论。您可以使用您的代码。查看我评论中的最后一个 sn-p
  • 所以我得到一个错误 JSON.parse Error:Invalid character at position:10 位于 if 语句的中间 @Tschallacka
猜你喜欢
  • 2015-08-06
  • 2015-08-26
  • 2013-08-22
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多