从json中的动态键值获取数据

时间:2010-10-05 11:29:17

标签: javascript json key-value

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

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

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

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

var inputLocation=input.value;

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

如果我执行此操作data.Aspen,我可以获取json数组但是我必须从文本字段中获取数据,它可以是不同的,所以如果我调用data.inputLocation ...它的未定义< / p>

当我使用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"
 }
 ]
}

2 个答案:

答案 0 :(得分:42)

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

data[inputLocation]

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

data["Aspen"]
data.Aspen

答案 1 :(得分: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);
}