我尝试从C#中的JSON字符串中提取数据,到目前为止,我建议使用JavaScriptSerializer。我没有太多运气,但是当使用int.Parse时我得到的结果不是很少。
using (WebClient wc = new WebClient())
{
string json = wc.DownloadString("www.redacated.com/" + args[0]);
var serializer = new JavaScriptSerializer();
dynamic result = serializer.DeserializeObject(json);
var url = int.Parse(result["file_url"]);
Console.WriteLine("URL: {0}", url);
}
链接的网址返回:
{
"file_size": 6606723,
"file_url": "redacted",
"preview_url": "redacted",
"title": "redacted"
}
这导致以下错误:
Unhandled Exception: System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at CallSite.Target(Closure , CallSite , Type , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
at Workshopdownloader.Workshopdownloader.Main(String[] args) in c:\users\*\documents\visual studio 2015\Projects\ConsoleApplication7\ConsoleApplication7\Program.cs:line 29
答案 0 :(得分:0)
有一个POCO类来代表你的对象:
public YOUR_POCO
{
public int file_size {get; set;}
public string file_url {get; set;}
public string preview_url {get; set;}
public string title {get; set;}
}
然后您只需要使用JSON .Net将其反序列化为它:
YOUR_POCO poco = JsonConvert.DeserializeObject<YOUR_POCO>(output);
像访问任何其他对象一样访问它
// use the file size
var file_size = poco.file_size;
答案 1 :(得分:0)
实际上您的代码很酷,只需更改转换。
您最初尝试将字符串转换为变为且整数在任何情况下都不会发生,因此编译器在到达时抛出FormatException
var url = int.Parse(result["file_url"]);
更改为
var url = result["file_url"];