web-dev-qa-db-ja.com

JSONの動的キー値からデータを取得する

要件は次のとおりです。
ページから場所フィールドを取得する必要があります。

_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"
 }
 ]
}
_
15
AutoMEta

配列のような構文を使用してプロパティにアクセスできます。

data[inputLocation]

inputLocation"Aspen"に設定されている場合、これは次の2行と同じです。

data["Aspen"]
data.Aspen
44
Douglas

リアルタイムの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);
}
2
Yasin Sunni