根据用户选择获取 JSON 密钥
Get a JSON Key based off of a user select
我目前正在创建一个工具,允许用户输入他们的状态和类别,以查看 3 个价格计划是什么。这 2 个选择(州/类别)将通过选择字段进行选择,包含这些数字的数据位于 JSON 文件中:
[{
"Alabama/Category1/Price1":"$123,123 ",
"Alabama/Category1/Price2":"$123,123 ",
"Alabama/Category1/Price3":"$123,123 ",
"Alabama/Category2/Price1":"$345,345 ",
"Alabama/Category2/Price2":"$345,345 ",
"Alabama/Category2/Price3":"$345,345 ",
"Alabama/Category3/Price1":"$456,789 ",
"Alabama/Category3/Price2":"$456,789 ",
"Alabama/Category3/Price3":"$456,789 ",
"Alabama/Category4/Price1":"$321,321 ",
"Alabama/Category4/Price2":"$321,321 ",
"Alabama/Category4/Price3":"$321,321 ",
"Alaska/Category1/Price1":"$123,123 ",
"Alaska/Category1/Price2":"$123,123 ",
"Alaska/Category1/Price3":"$123,123 ",
"Alaska/Category2/Price1":"$345,345 ",
"Alaska/Category2/Price2":"$345,345 ",
"Alaska/Category2/Price3":"$345,345 ",
"Alaska/Category3/Price1":"$456,789 ",
"Alaska/Category3/Price2":"$456,789 ",
"Alaska/Category3/Price3":"$456,789 ",
"Alaska/Category4/Price1":"$321,321 ",
"Alaska/Category4/Price2":"$321,321 ",
"Alaska/Category4/Price3":"$321,321 ",
}]
基本上在单击按钮时,我想遍历 JSON 文件并根据用户选择获取状态/类别。由于该键路径中有一些"/",我尝试将用户选择隐藏在变量中,以便我可以定位每个价格点并将它们显示在页面上。我的尝试方法是将其存储在变量中,如下所示:
var test = stateSelected + '/' + categorySelected + '/Price1';
然而,这是行不通的,并且想知道是否有任何关于如何实现这一目标的其他见解?阅读其他一些材料,似乎有些人建议使用 $.parseJSON,但这也不起作用。为此,我使用了:
$.getJSON("json_data.json", function(obj) {
$.each($.parseJSON(data), function(key, value) {
//code here
});
});
很抱歉这个长寿,但在这个网站上我看到人们没有提供足够的信息让人们能够理解真正的问题,我希望我正确地概述了我的。任何这方面的帮助将不胜感激。谢谢!
编辑:另外,如果您认为除了我在这里拥有的方式之外,还有其他方式来呈现JSON数据,请告诉我。数据将通过电子表格更新,我使用了 Excel -> JSON 转换器工具,这就是它吐出数据的方式。
我会按以下方式格式化 JSON:
var options = {
Alabama: {
Category1: {
Price1: "$123, 123",
Price2: "$123, 123",
}
}
}
然后:
var priceOptions = options[stateSelected][categorySelected];
如果您无法更改 JSON,则必须遍历对象中的每个键:
function getPricePoints(state, category, onComplete)
{
$.getJSON("json_data.json", function(obj)
{
var result = {};
for(key in obj)
{
if(obj.hasOwnProperty(key) && key.indexOf(state + "/" + category + "/") == 0)
{
result[key] = obj[key];
}
}
onComplete(result);
});
}
如果您可以更改 JSON 的表示方式,那么为什么不像这样存储数据:
var options = {
"Alabama/Category1" : {
"Price1":"$123,123 ",
"Price2":"$123,123 ",
"Price3":"$123,123 "
},
"Alabama/Category2" : {
"/Price1":"$345,345 ",
"Price2":"$345,345 ",
"Price3":"$345,345 "
}
...
}
然后,您可以削减用户的输入并获取状态和类别组合的所有价格选项?
test = stateSelected + '/' + categorySelected;
var priceOptions = options[test];
相关文章:
- 加载两个具有相同父密钥名称的json文件
- D3动态json密钥名称
- 根据用户选择获取 JSON 密钥
- 从包含密钥路径的字符串中获取json值
- 如何在javascript中获取数组密钥对的json子值
- node.js JSON.parse reviver没有't报告重复的密钥
- 仅使用该值检索 JSON 密钥
- 当我不知道密钥的名称时,如何读取 JSON 对象
- 动态创建 json 密钥
- 循环访问没有数组的 JSON 密钥对象
- 如何在 json 密钥中访问 Json 密钥
- 基于 json 密钥值的特定车把模板
- 使用正则表达式转换 JSON 密钥值
- 如何将 JSON 密钥转换为值
- 带有美元符号的JSON密钥
- 找不到JSON密钥
- 只加密json密钥值,并获得整个json对象的响应与密钥值加密
- TypeScript:使用函数参数作为JSON密钥名称
- 获取 JSON 密钥名称
- JSON 密钥存在,但返回 false