C# 将JSON字符串反序列化到对象列表并写入值控制台

C# 将JSON字符串反序列化到对象列表并写入值控制台,c#,json,C#,Json,我正试图从雅虎金融公司获取一些市场数据。 我无法反序列化json流并将其写入控制台 我已经通过了几个堆栈溢出问题,试图把一些东西放在一起 我不确定是否编写了正确的代码,因为我在将结果写入控制台时也遇到了问题 我从Yahoo获得的json数据如下所示: { "ResultSet":{ "Query":"genmab", "Result":[ { "symbol":"GNMSF", "name":"Gen

我正试图从雅虎金融公司获取一些市场数据。 我无法反序列化json流并将其写入控制台

我已经通过了几个堆栈溢出问题,试图把一些东西放在一起

我不确定是否编写了正确的代码,因为我在将结果写入控制台时也遇到了问题

我从Yahoo获得的json数据如下所示:

{
   "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&region=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);
}