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的主要内容,如果未能解决你的问题,请参考以下文章

在C#中怎样将一个字符串ENCODE成UTF8的URL格式

使用 cURL 抓取 JSON 文本时无法解析?

C# JSON URL 获取数据

从 C# 中的属性获取图像 URL

用C#语言将json格式数据转成json对象

怎样将json数据转换成匿名数组或者泛型对象(c#)