C# 将JSON字符串反序列化到对象列表并写入值控制台
我正试图从雅虎金融公司获取一些市场数据。 我无法反序列化json流并将其写入控制台 我已经通过了几个堆栈溢出问题,试图把一些东西放在一起 我不确定是否编写了正确的代码,因为我在将结果写入控制台时也遇到了问题 我从Yahoo获得的json数据如下所示:C# 将JSON字符串反序列化到对象列表并写入值控制台,c#,json,C#,Json,我正试图从雅虎金融公司获取一些市场数据。 我无法反序列化json流并将其写入控制台 我已经通过了几个堆栈溢出问题,试图把一些东西放在一起 我不确定是否编写了正确的代码,因为我在将结果写入控制台时也遇到了问题 我从Yahoo获得的json数据如下所示: { "ResultSet":{ "Query":"genmab", "Result":[ { "symbol":"GNMSF", "name":"Gen
{
"ResultSet":{
"Query":"genmab",
"Result":[
{
"symbol":"GNMSF",
"name":"Genmab A/S",
"exch":"PNK",
"type":"S",
"exchDisp":"OTC Markets",
"typeDisp":"Equity"
},
{
"symbol":"GE9.F",
"name":"Genmab A/S",
"exch":"FRA",
"type":"S",
"exchDisp":"Frankfurt",
"typeDisp":"Equity"
},
{
"symbol":"GEN.F",
"name":"GENMAB AS DK 1",
"exch":"FRA",
"type":"S",
"exchDisp":"Frankfurt",
"typeDisp":"Equity"
},
{
"symbol":"GE9.BE",
"name":"GENMAB AS DK 1",
"exch":"BER",
"type":"S",
"exchDisp":"Berlin",
"typeDisp":"Equity"
},
{
"symbol":"GE9.SG",
"name":"GENMAB AS Navne Aktier DK 1",
"exch":"STU",
"type":"S",
"exchDisp":"Stuttgart",
"typeDisp":"Equity"
},
{
"symbol":"GEN.CO",
"name":"Genmab A/S",
"exch":"CPH",
"type":"S",
"exchDisp":"Copenhagen",
"typeDisp":"Equity"
},
{
"symbol":"GEN.SG",
"name":"GENMAB AS Navne Aktier DK 1",
"exch":"STU",
"type":"S",
"exchDisp":"Stuttgart",
"typeDisp":"Equity"
},
{
"symbol":"GMXAY",
"name":"Genmab A/S",
"exch":"PNK",
"type":"S",
"exchDisp":"OTC Markets",
"typeDisp":"Equity"
},
{
"symbol":"GE9.DU",
"name":"GENMAB AS DK 1",
"exch":"DUS",
"type":"S",
"exchDisp":"Dusseldorf Stock Exchange",
"typeDisp":"Equity"
},
{
"symbol":"0MGB.IL",
"name":"GENMAB A/S GENMAB ORD SHS",
"exch":"IOB",
"type":"S",
"exchDisp":"International Orderbook - London",
"typeDisp":"Equity"
}
]
}
}
foreach (var item in oRootObject.ResultSet.Result)
{
Console.WriteLine(item.name);
}
我放在一起的代码应该创建一个数据对象列表:
using System.Web.Script.Serialization;
public class DataObject
{
public string symbol { get; set; }
public string name { get; set; }
public string exch { get; set; }
public string type { get; set; }
public string exchDisp { get; set; }
public string typeDisp { get; set; }
}
public class RootObject
{
public DataObject[] resultSet { get; set; }
}
using (WebClient web = new WebClient())
{
string _url = "http://d.yimg.com/aq/autoc?query=genmab®ion=CO&lang=en-US";
var search = web.DownloadString(_url);
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<RootObject> oRootObject = serializer.Deserialize<List<RootObject>>(search);
我已尝试调试流,但看不到任何数据进入对象列表
谢谢
Flemming格式化JSON后,我可以看到您的类没有完全映射到JSON 我使用了一个非常方便的工具——创建映射到json的类:
public class Result
{
public string symbol { get; set; }
public string name { get; set; }
public string exch { get; set; }
public string type { get; set; }
public string exchDisp { get; set; }
public string typeDisp { get; set; }
}
public class ResultSet
{
public string Query { get; set; }
public List<Result> Result { get; set; }
}
public class RootObject
{
public ResultSet ResultSet { get; set; }
}
格式化JSON之后,我可以看到您的类没有完全映射到JSON 我使用了一个非常方便的工具——创建映射到json的类:
public class Result
{
public string symbol { get; set; }
public string name { get; set; }
public string exch { get; set; }
public string type { get; set; }
public string exchDisp { get; set; }
public string typeDisp { get; set; }
}
public class ResultSet
{
public string Query { get; set; }
public List<Result> Result { get; set; }
}
public class RootObject
{
public ResultSet ResultSet { get; set; }
}
你打败我了!特别的问题是,OP将ResultSet映射为一个数组,而不是包含查询,当我正确格式化json时,结果数组就会看到这一点。json2csharp.com也帮了大忙!谢谢你帮了大忙。但是我如何访问或将不同的{get;set;}写入控制台呢。我想用foreach,但我似乎没能把代码弄好。你赢了我!特别的问题是,OP将ResultSet映射为一个数组,而不是包含查询,当我正确格式化json时,结果数组就会看到这一点。json2csharp.com也帮了大忙!谢谢你帮了大忙。但是我如何访问或将不同的{get;set;}写入控制台呢。我曾想过使用foreach,但似乎无法正确使用代码。
foreach (var item in oRootObject.ResultSet.Result)
{
Console.WriteLine(item.name);
}