gpt4 book ai didi

javascript - Javascript 中的 JSONPath 太长了——比经典循环长大约 3000 倍

转载 作者:行者123 更新时间:2023-11-30 06:53:44 24 4
gpt4 key购买 nike

在 Javascript 中运行 JSONPath 时遇到性能问题(Stephan Goessner Usefull Library)

具有以下 JSON 结构。

[
{
id:1,
name: "lorem",
elements:
[
{
id:101,
date: Fri Jan 31 2014 18:03:41 GMT+0100 (Paris, Madrid), // Javascript Date Object,
instances: [
{
id: 1001,
properties: [
{
code: 'ipsum lens',
id: 1001,
values: [
"value1",
"value2",
...
// less than 5 values
]
},
... , / between 20 to 40 items
]
},
... // About 100 items
]
},
... // Less than 5 items
],
meta: [
{
id: 10000,
code: 'codeabc',
property1: true,
property2: false,
property3: 2939,
},
... // between 20 to 40 items
]
},
... // 4 items
]

这里是数量:

  • level1 包含 4 个项目
  • level2 'elements' 在每个级别上包含 2 个项目
  • level3 'instances' 包含关于我的特定元素的大约 100 个项目(其他完全相同)
  • level4 'properties' 包含大约 15 个项目

使用 JSON 路径,下面的代码让我在 chrome 中响应时间接近 4 秒

var startDate = new Date();
var searchedValue = jsonPath(
myJSONStore,
"$.[?(@.name == 'myelementname')].elements[?(@.id == 100)].date"
)[0];
console.log(date)
console.log("Get in " + ((new Date().getTime() - startDate.getTime()) / 1000) + "s")

考虑到低数据量,我发现这个延迟真的很长。我也尝试了这个经典代码,没有 jsonPath

var startDate = new Date();
var searchedValue = null;
for(i in myJSONStore) {
if (myJSONStore[i].name == 'myelementname') {
for (j in myJSONStore[i].elements) {
if (myJSONStore[i].elements[j].id == 100) {
var date = myJSONStore[i].elements[j].date;
break;
}
}
}
}
console.log(date)
console.log("Get in " + ((new Date().getTime() - startDate.getTime()) / 1000) + "s")

这一次,只用了 1 毫秒

JsonPath 因其简单而简短的语法(如 kiss principle,我很喜欢)而保持其吸引力...但是有没有办法减少计算延迟 ...?大约 4000 倍令人印象深刻

最佳答案

1)在aspx.cs页面中使用下面的代码。

string path= "你的JSON文件路径";Hiddenfield.Value = File.ReadAllText(路径);

2)之后,尝试在aspx页面中使用下面的代码,即通过隐藏字段获取json对象。

var xyz =$.parseJSON(document.getElementById('<%=Hiddenfield.ClientID%>').value);

关于javascript - Javascript 中的 JSONPath 太长了——比经典循环长大约 3000 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21528685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com