C# |从 URL 抓取 JSON 无法将字符串转换为 int
Posted
技术标签:
【中文标题】C# |从 URL 抓取 JSON 无法将字符串转换为 int【英文标题】:C# | Grabbing JSON from URL cannot convert string to int 【发布时间】:2017-02-28 15:08:57 【问题描述】:我有一段代码,它应该从 URL 中获取信息。获取名为 lowest_price
的值,然后将其解析为变量,但 JSON 中有一个 $
符号,因此我不得不将其删除,之后我无法正确解析 JSON。
我的代码:
var tokenPrice = JObject.Parse(steamMarket).ToString().Replace("$", " ");
double marketPrice = tokenPrice["lowest_price"];
JSON
"success":true,"lowest_price":"$5.61","volume":"6","median_price":"$5.61"
错误:
参数 1:无法从 'string' 转换为 'int'
【问题讨论】:
Problem parsing currency text to decimal type的可能重复 【参考方案1】:double marketPrice = double.Parse(JObject.Parse(steamMarket)["lowest_price"].ToString().Replace("$", ""));
【讨论】:
【参考方案2】:你也可以这样做:
string json = "\"success\":true,\"lowest_price\":\"$5.61\",\"volume\":\"6\",\"median_price\":\"$5.61\"";
var jObject = Newtonsoft.Json.Linq.JObject.Parse(json);
double tokenPrice = double.Parse((string )jObject["lowest_price"], NumberStyles.Currency, new CultureInfo("en-US"));
【讨论】:
【参考方案3】:tokenPrice["lowest_price"] 是一个字符串,c# 不会自动为您转换类型。
var tokenPrice = JObject.Parse(steamMarket);
double marketPrice = double.Parse(tokenPrice["lowest_price"].ToString().Replace("$", ""));
【讨论】:
这为 tokenPrice 提供了 Replace 的值,它是一个字符串。您不能使用字符串对字符串进行索引。和原代码有同样的问题。以上是关于C# |从 URL 抓取 JSON 无法将字符串转换为 int的主要内容,如果未能解决你的问题,请参考以下文章