错误读取JSONREADER的读数.当前的JSONREADER项目不是C#中的对象



我已经编写了一件代码,以从下面的货币转换器中获取一个值:

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);
    }
}

相关内容

  • 没有找到相关文章

最新更新