【问题标题】:C# convert string to int jsonC# 将字符串转换为 int json
【发布时间】:2015-07-29 13:52:01
【问题描述】:

我遇到了一个错误:

使用代码时:

 var json = webClient.DownloadString("http://backpack.tf/api/IGetCurrencies/v1/?key=54907d14ba8d88b17d8b4655&appid=440");
 Newtonsoft.Json.Linq.JObject o = Newtonsoft.Json.Linq.JObject.Parse(json);
 string BBPrice_low = (string)o["response"]["currencies"]["keys"]["price"]["value"];
 Console.WriteLine("\"" + BBPrice_low + "\"");
 int BPrice_low = (Convert.ToInt32(BBPrice_low));

但最后一行出现错误。 json字符串为“15.77”时无法转换,是可转换的字符串,对吧?

【问题讨论】:

  • 我建议查阅文档:msdn.microsoft.com/en-us/library/sf1aw27b(v=vs.110).aspx - 当value does not consist of an optional sign followed by a sequence of digits (0 through 9). 时抛出FormatException
  • 这个问题是由无法再复制的问题或简单的印刷错误引起的。
  • 这段代码不应该编译,名称BBPrice_high在当前上下文中不存在。也许您的意思是BPrice_high,但这也不应该编译,因为您将尝试读取未分配的变量(您在同一变量声明中使用该变量)。也许你的意思是BBPrice_low

标签: c# json string int


【解决方案1】:

int = 没有小数部分的数字。所以 15.77 不是一个有效的整数
尝试不同的数据类型,例如 float 或 double,如果需要 int,则应将其舍入

【讨论】:

  • 双 BPrice_high = (Convert.ToDouble(BBPrice_high));将返回 1577 而不是 15.77
【解决方案2】:

15.77 不是有效整数。使用Convert.ToDouble() 也许你还需要设置 CultureInfo。

Convert.ToDouble("15.77", CultureInfo.GetCultureInfo("en-US"));

【讨论】:

  • 谢谢!这对我有帮助
【解决方案3】:

只要做:

Convert.ToDouble(15.77) or Convert.ToDecimal(15.77)

15.77 是 C# 中的 Double 数据类型

【讨论】:

  • 是的。一个Double,反正转换是有效的
猜你喜欢
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多