【问题标题】:How to query a json file with a specific id and get an array of results?如何查询具有特定 id 的 json 文件并获取结果数组?
【发布时间】:2013-10-16 12:34:46
【问题描述】:

我正在努力研究如何根据循环中的当前 ID 获取 temp.json 的值,请参阅下面的代码我希望能够根据匹配的交付 ID(deliveryid 和 temp_deliveryid)检索数组在 temp.json 中。然后将它们打印到一张桌子上。 temp.json 的内容会不断变化。

deliveries.json

{
   "all_info":[
      {
         "deliveryid":"1",
         "deldescription":"Food Delivery3432",
         "delivery_create_time":"2013-09-26 01:19:03",
         "routeid":"1",
         "startloc":"Newcastle",
         "endloc":"Paris",
         "distance":"500",
         "stockid":"2",
         "stockname":"Chicken",
         "stockshelf":"20",
         "stockdesc":"Newcastle Chickens",
         "supplierid":"1",
         "supname":"Benny's Fresh Food",
         "supaddress":"1 Osborne Road",
         "supcity":"Manchester",
         "suppostcode":"MA11KL7",
         "vehicleid":"1",
         "vehiclereg":"TRE12XYZ"
      },
      {
         "deliveryid":"2",
         "deldescription":"Fresh Beef",
         "delivery_create_time":"2013-09-26 01:19:03",
         "routeid":"3",
         "startloc":"London",
         "endloc":"Niece",
         "distance":"800",
         "stockid":"1",
         "stockname":"Beef",
         "stockshelf":"20",
         "stockdesc":"Beef from Madrid Farm",
         "supplierid":"2",
         "supname":"Denone Ltd",
         "supaddress":"231 Morje Road",
         "supcity":"Barcelona",
         "suppostcode":"MR3K12",
         "vehicleid":"2",
         "vehiclereg":"RFGXMN4"
      },
      {
         "deliveryid":"3",
         "deldescription":"Meat Delivery",
         "delivery_create_time":"2013-10-14 01:48:59",
         "routeid":"3",
         "startloc":"London",
         "endloc":"Niece",
         "distance":"800",
         "stockid":"4",
         "stockname":"Trout and Salmon",
         "stockshelf":"11",
         "stockdesc":"FIshers Best Catch",
         "supplierid":"4",
         "supname":"Youngs Ltd",
         "supaddress":"4 Tressle Road",
         "supcity":"Telford",
         "suppostcode":"TE62GF5",
         "vehicleid":"1",
         "vehiclereg":"TRE12XYZ"
      },
      {
         "deliveryid":"6",
         "deldescription":"Travel Chicken",
         "delivery_create_time":"2013-10-16 02:27:26",
         "routeid":"4",
         "startloc":"Edingburgh",
         "endloc":"Malaga",
         "distance":"2000",
         "stockid":"3",
         "stockname":"Rare Meats",
         "stockshelf":"45",
         "stockdesc":"Expensive Food",
         "supplierid":"3",
         "supname":"Posh Food Ltd",
         "supaddress":"3 Fawn Street",
         "supcity":"Warick",
         "suppostcode":"WR32B54",
         "vehicleid":"1",
         "vehiclereg":"TRE12XYZ"
      }
   ]
}

temp.json

{
   "temp_info":[
      {
         "temperatureid":"1",
         "recorded_temp":"24",
         "weather":"Sunny",
         "temp_recorded_time":"2013-09-27 20:54:11",
         "temp_deliveryid":"1"
      },
      {
         "temperatureid":"2",
         "recorded_temp":"14",
         "weather":"Cloudy",
         "temp_recorded_time":"2013-09-27 20:54:11",
         "temp_deliveryid":"3"
      },
      {
         "temperatureid":"3",
         "recorded_temp":"17",
         "weather":"Rain",
         "temp_recorded_time":"2013-09-27 20:54:51",
         "temp_deliveryid":"2"
      },
      {
         "temperatureid":"4",
         "recorded_temp":"32",
         "weather":"Hot",
         "temp_recorded_time":"2013-09-27 20:54:51",
         "temp_deliveryid":"1"
      }
   ]
}

网站代码示例

$.getJSON("jsonfiles/deliveries.json", function(delivery) {
    for(var i = 0; i < delivery.all_info.length; i++) {  
       var deliv = delivery.all_info[i];
           x = '<div id="' + deliv.deliveryid + '">' + deliv.deldescription + '</div>
           document.getElementById("sortable1").innerHTML += x;
                $.getJSON("jsonfiles/temp.json", function(temp) {
                    deliv.forEach(function(entry) {
                       var tempi = tempe.temp_info[i];
                         if (tempi.temp_deliveryid == entry.deliveryid){
var y = '<tr><td>[' + temp.temp_recorded_time + '] '+ temp.temperature_id + ' - Temperature: ' + temp.recorded_temp +'&#x2103; - Weather (' + temp.weather + ')!</td></tr>';    
document.getElementById("temptbody").innerHTML += y;    
     });
    }
  });
}); 

【问题讨论】:

  • 如果temp.json的内容不断变化,deliveries.json的内容不是经常变化吗?如果是这样,为什么要在交付中嵌套 temp 的 getJson?
  • 看看这个问题希望这会告诉你如何做到这一点,stackoverflow.com/questions/16158626/…

标签: javascript jquery arrays json


【解决方案1】:

如我的 cmets 所述,如果 Deliveries.json 没有像 temp.json 那样频繁更改,我会这样做

$.getJSON("jsonfiles/deliveries.json", function(delivery) { 变量 x =''; for(var i = 0; i ' + deliv.deldescription + '
'; } $("#sortable").html(x); });

这样更新每次交付的效率更高。

然后获取你的 temp.json

$.getJSON("jsonfiles/temp.json", function(temp) { var temps = {}; 变量 y=''; for(var i = 0; i [' + temp.temp_recorded_time + '] '+ temp.temperature_id + ' - 温度:' + temp.recorded_temp +'℃ - 天气(' + temp.weather + ')!'; } $("#temptbody").html(y); });

我认为您可能没有解释的是#sortable#temptbody 之间的关系。 如果存在这种关系,另一种选择可能是将deliveries.json 保存为变量,然后在检索temp.json 时,将适当的临时详细信息直接附加到deliveries.json 中

【讨论】:

  • 感谢您的回复,但这仍然没有解释如何比较每次交付的 temp.temp_deliveryid 和 deliv.deliveryid。
猜你喜欢
  • 1970-01-01
  • 2022-10-26
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 2014-12-18
相关资源
最近更新 更多