Javascript-解析JSON以查找对象字符串

Javascript-解析JSON以查找对象字符串,javascript,json,Javascript,Json,我正在创建一个网页,其中显示我从JSON解析的数据。我使用2个JSON文件。一个我可以毫无问题地解析的问题,另一个我正在努力解决。 我希望能够解析JSON以查找特定的对象字符串,并返回同一字典中的所有其他对象字符串 JSON的布局是: { "example":[ { "Area":"Inside", "Player":"1", "Status":1, "Start_Time":"2016-12-21", "End_Time"

我正在创建一个网页,其中显示我从JSON解析的数据。我使用2个JSON文件。一个我可以毫无问题地解析的问题,另一个我正在努力解决。
我希望能够解析JSON以查找特定的对象字符串,并返回同一字典中的所有其他对象字符串

JSON的布局是:

{
  "example":[
    {
      "Area":"Inside",
      "Player":"1",
      "Status":1,
      "Start_Time":"2016-12-21",
      "End_Time":"2016-12-22",
    },
    {
      "Area":"Outside",
      "Player":"1",
      "Status":1,
      "Start_Time":"2016-12-24",
      "End_Time":"2016-12-25",
    },
    {
      "Area":"Outside",
      "Player":"2",
      "Status":1,
      "Start_Time":"2016-12-26",
      "End_Time":"2016-12-28",
    }
  ]
}
我想说

if (player=="1") {//show ALL areas and start and end time}
//output should be something like: Area: Inside, Player: 1, Status: 1, Start_Time: 'Time', End_Time: 'Time', Area: Outside, Player: 1, Status: 1, Start_Time: 'Time', End_Time: 'Time'
我试图用javascript解析JSON,这就是我解析其他JSON的方式:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var myObj = JSON.parse(this.responseText);
    var dateTime = myObj.Date;
  }
};
xmlhttp.open("GET", "http://web/server/file.json", true);
xmlhttp.send();
感谢您的帮助。

使用forEach循环

var a={
“示例”:[
{
“区域”:“内部”,
“玩家”:“1”,
“地位”:1,
“开始时间”:“2016-12-21”,
“结束时间”:“2016-12-22”,
},
{
“区域”:“外部”,
“玩家”:“1”,
“地位”:1,
“开始时间”:“2016-12-24”,
“结束时间”:“2016-12-25”,
},
{
“区域”:“外部”,
“玩家”:“2”,
“地位”:1,
“开始时间”:“2016-12-26”,
“结束时间”:“2016-12-28”,
}
]
};

a、 示例.forEach(e=>e.Player==“1”和&e.Area==“Inside”?console.log(e):false)
您可能需要尝试
过滤器

myObj.example.filter(obj => obj.Player == "1")

// 0: {Area: "Inside", Player: "1", Status: 1, Start_Time: "2016-12-21", End_Time: "2016-12-22"}
// 1: {Area: "Outside", Player: "1", Status: 1, Start_Time: "2016-12-24", End_Time: "2016-12-25"}



这里确实有两个问题:获取JSON,然后解析它以找到感兴趣的数据。下面的代码片段使用
fetch()
(是
XMLHttpRequest
的现代继承者)处理第一个任务,使用
Array.prototype.filter
处理后一个任务

请注意,如果您不使用现代javascript环境,此解决方案将失败。还请注意,可以使用新的async/await来改进这一点。为了简单起见,我排除了它们

fetch(“http://web/server/file.json“”//在现代浏览器中受支持。
.then(res=>res.json())//解析为json。如果给定不正确的json,则失败
。然后(数据=>{
console.log(data.example.filter(el=>el.Player==1));//filter只返回满足条件的元素的数组
});

由于我的json与我的javascript是一个单独的文件,我会使用
var test=myObj.example.forEach(e=>e.Player==“1”?console.log(e):false)
你必须从文件导出json,并且在你的js文件中,你必须像下面那样导入它。/jsonfile.js'。然后你可以使用上面的代码!谢谢,这个有用!如果我想,当
Player==“1”
区域==“内部”
时,它将如何工作。我尝试使用
&&
,因为这对我来说最有意义,但我得到了一个错误。forEach不是这个问题的标准解决方案。创建filter方法正是为了解决这个问题。forEach是一个很好的(虽然不是最理想的)解决方案,它只记录满足条件的元素。然而,它不允许我们对这些元素做任何事情。此外,OP的措辞意味着他们还需要帮助检索和准备JSON以进行操作。我得到这个错误
TypeError:data.filter不是fetch的函数。然后.then.data
应该被修复-没有看到数组被嵌套。必须将
Player==1
更改为
Player==“1”
而且它很有效!当
Player=“1”
Area=“Outside”
时,我将如何做?您将把所有条件放在箭头(=>)之后。例如:
data.example.filter(el=>el.Player==“1”&&el.Area==“外部”)您知道如何控制json无效时出现的错误吗?请参见:检查编辑