【问题标题】:get data from dynamic key value in json从json中的动态键值获取数据
【发布时间】:2011-04-21 06:18:38
【问题描述】:

要求如下:
我必须从页面获取位置字段。

var input= global.input = document.getElementById("Location");

根据输入从json文件中获取邻域区域并显示在页面上。

我有一个 json 对象,必须根据键值(位置)过滤来自 json 对象的数据

var inputLocation=input.value;

在我的 javascript 中,如果我使用动态密钥,我会收到错误消息。

如果我这样做data.Aspen,我可以获取 json 数组,但我必须从文本字段中获取数据,它可能会有所不同,所以如果我调用 data.inputLocation... 它即将到来未定义

当我使用data.(inputLocation.value) 时出现以下错误:

XML 过滤器应用于非 XML 值({Aspen:[{ID:

{
 "Aspen":[
 {
  "ID":"Bellaire",
  "Name":"Bellaire"
 },
 {
  "ID":"Champions Forest",
  "Name":"Champions Forest"
 },
 {
  "ID":"Highland Village",
  "Name":"Highland Village"
 },
 {
  "ID":"Museum District",
  "Name":"Museum District"
 }
 ]
}

【问题讨论】:

  • 我不明白你的问题是什么。你可以试着用更简单的方式解释自己……举一些例子。
  • Java 不是 Javascript ;)
  • @Luca Matteis Douglas 回答了这个问题。实际上我不知道从 key.in 而不是 data.(inputLocation.value) 获取值的语法,我使用了 data[inputLocation] 和问题已解决。

标签: javascript json key-value


【解决方案1】:

您可以使用类似数组的语法访问该属性:

data[inputLocation]

如果inputLocation设置为"Aspen",则与这两行相同:

data["Aspen"]
data.Aspen

【讨论】:

  • 拯救了我的一天。谢谢:)
  • 如果我们有动态位置怎么办?让我们展示它可能是 data[Name][Age],其中 name 和 age 都可以是动态的。在这种情况下我们该怎么办?
  • 由于缺少 ES6 支持,在修复 grunt uglify 错误方面为我节省了大量时间。非常感谢!
【解决方案2】:

使用实时货币转换器rest api响应从动态json对象获取价值

public async Task<JsonResult> ConvertCurrency(float Price, string FromCurrency)
{
    var testcase = FromCurrency + "_USD";
    WebClient web = new WebClient();
    const string ConverterApiURL = "http://free.currencyconverterapi.com/api/v5/convert?q={0}_{1}&compact=ultra&apiKey={{EnterKey}}";
    string url = String.Format(ConverterApiURL, FromCurrency, "USD");

    string response = new WebClient().DownloadString(url);

    var data = (JObject)JsonConvert.DeserializeObject(response);
    dynamic result = data.SelectToken(testcase + ".val").ToString();

    var basePrice = float.Parse(result);

    double exchangeRate = Price * basePrice;
    var responce = Math.Round(exchangeRate, 2);
    return Json(responce, JsonRequestBehavior.AllowGet);
}

【讨论】:

  • 为什么你在一个关于 JS 的问题上发布了 C# 答案?即使在 C# 中,还需要展示如何使用特定的 API?你可以说有一个SelectToken 方法。
猜你喜欢
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 2018-07-10
相关资源
最近更新 更多