我已经编写了一件代码,以从下面的货币转换器中获取一个值:
WebClient n = new WebClient();
var JsonData = n.DownloadString("http://currencyconverterapi.com/api/v6/convert?q=USD_NRI&compact=ultra&apiKey=");
JsonData = {"USD_INR":69.657026} // Got value result from JsonData
dynamic JObj = JObject.Parse(JsonData);
dynamic JOresult = JObject.Parse(Convert.ToString(JObj.USD_INR)); //Got Error here (Error reading JObject from JsonReader. Current JsonReader item is not an object: Float. Path '', line 1, position 9.)
string JOFilter_Val = Convert.ToString(JOresult.val);
decimal Total = 230 * Convert.ToDecimal(JOFilter_Val);
return Total;
我想从乘以十进制230的'69 .657026'并返回最终结果。有人可以告诉我我在做什么错,如果可能的话,请纠正吗?
尚不清楚为什么您要试图将69.657026
作为锻炼解析 - 它不是对象。
我怀疑您根本不需要这样做 - 只需使用JObj.USD_INR
作为小数:
decimal value = JObj.USD_INR; // Use the dynamic conversion to handle this
通常,您似乎比您需要的要多。这是我认为您要做的事情的完整示例:
using Newtonsoft.Json.Linq;
using System;
class Test
{
static void Main()
{
string json = "{ "USD_INR": 69.657026 }";
dynamic obj = JObject.Parse(json);
decimal rate = obj.USD_INR;
decimal total = 230 * rate;
Console.WriteLine(total); // 16021.115980
}
}
另外,没有动态键入:
using Newtonsoft.Json.Linq;
using System;
class Test
{
static void Main()
{
string json = "{ "USD_INR": 69.657026 }";
JObject obj = JObject.Parse(json);
decimal rate = (decimal) obj["USD_INR"];
decimal total = 230 * rate;
Console.WriteLine(total);
}
}