如何在使用变量时解析JSON?

时间:2014-03-08 06:23:58

标签: c# json

我正在使用C#

解析JSON

此代码可以正常工作:

            var json = webClient.DownloadString("API KEY");
            Newtonsoft.Json.Linq.JObject o = Newtonsoft.Json.Linq.JObject.Parse(json);
            Console.WriteLine(DefindexS);
            price = (double)o["response"]["prices"]["5021"]["6"]["0"]["current"]["value"];
            currency = (string)o["response"]["prices"]["5021"]["6"]["0"]["current"]["currency"];
            Console.WriteLine("price" + price);
            Console.WriteLine("Currency" + currency);

打印正确 price7.11 Currencymetal

这是捕获。上述两种情况中的“5021”需要由用户设置的变量替换。 JSON数据没问题。只要数字正确,它就会返回一个合适的值。

变量是DefindexS。我尝试通过DefindexS替换“5021”进行解析(我已将值设置为5021)但它给了我一个未处理的异常错误。

然后我尝试格式化并执行此操作:

            string realdef = String.Format("\"{0}\"", DefindexS.ToString());
            Console.WriteLine(realdef);
            var json = webClient.DownloadString("API KEY");
            Newtonsoft.Json.Linq.JObject o = Newtonsoft.Json.Linq.JObject.Parse(json);
            price = (double)o["response"]["prices"][realdef]["6"]["0"]["current"]["value"];
            currency = (string)o["response"]["prices"][realdef]["6"]["0"]["current"]["currency"];
            Console.WriteLine("price" + price);
            Console.WriteLine("Currency" + currency);

结果:

“5021” 然后崩溃.. realdef打印为“5021”,因此格式化正常。为什么我仍然收到错误?

1 个答案:

答案 0 :(得分:1)

您不必在变量周围添加引号。所以不需要这行代码:

string realdef = String.Format("\"{0}\"", DefindexS.ToString());

将其更改为

时应该有效
string realdef = DefindexS.ToString();