加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 无法将类型为“Newtonsoft.Json.Linq.JArray”的对象强制

发布时间:2020-12-15 23:28:46 所属栏目:百科 来源:网络整理
导读:我正在从webservice读取数据. json对象看起来像: var goldString = [ { "date":"20151109","day":30,"month":"November","year":2015,"club":9,"clubName":"Flamingo","itw":"XYD","races":{ "1":{ "race":1,"time":"12:20","raceStatus":"Undecided","refe
我正在从webservice读取数据. json对象看起来像:

var goldString = [  
   {  
      "date":"20151109","day":30,"month":"November","year":2015,"club":9,"clubName":"Flamingo","itw":"XYD","races":{  
         "1":{  
            "race":1,"time":"12:20","raceStatus":"Undecided","reference":91,"name":"WELCOME TO FLAMINGO PARK MAIDEN PLATE","description":"For Maidens","distance":1000,"stake":"R46,000","stakes":"1st: R28,750 | 2nd: R9,200 | 3rd: R4,600 | 4th: R2,300 | 5th: R1,150","surface":"Sand","going":"u0000","goingDescription":"","grade":0,"division":"MDNM","group":"G","class":"MAIDEN PLATE","condition":"For Maidens","handicap":false,"minWins":0,"maxWins":0,"minAge":"n/a","maxAge":"n/a","gender":"n/a","runners":[  

            ]
         },"2":{  
            "race":2,"time":"12:50","reference":92,"name":"RACING. IT'S A RUSH PINNACLE STAKES","description":"Open","distance":1800,"stake":"R66,"stakes":"1st: R41,250 | 2nd: R13,200 | 3rd: R6,600 | 4th: R3,650","division":"PINN","group":"A","class":"PINNACLE STAKES","condition":"Open","minWins":"n/a","maxWins":"n/a","3":{  
            "race":3,"time":"13:20","reference":93,"name":"INTERNATIONAL JOCKEYS' CHALLENGE 14 NOVEMBER MAIDEN PLATE","4":{  
            "race":4,"time":"13:50","reference":94,"name":"SOCCER 6 MR 65 HANDICAP","distance":1600,"stake":"R43,"stakes":"1st: R26,875 | 2nd: R8,600 | 3rd: R4,300 | 4th: R2,150 | 5th: R1,075","division":"MR65","group":"E","class":"MR 65 HANDICAP","handicap":true,"5":{  
            "race":5,"time":"14:20","reference":95,"name":"COMPUTAFORM EXPRESS MR 72 HANDICAP","distance":1400,"division":"MR72","group":"D","class":"MR 72 HANDICAP","6":{  
            "race":6,"time":"14:55","reference":96,"name":"RACING ASSOCIATION FM 67 HANDICAP (F & M)","description":"For Fillies and Mares","division":"FM67","class":"FM 67 HANDICAP (F & M)","condition":"For Fillies and Mares","gender":"female","7":{  
            "race":7,"time":"15:25","reference":97,"name":"SOCCER GG MR 66 HANDICAP","distance":1200,"division":"MR66","class":"MR 66 HANDICAP","8":{  
            "race":8,"time":"15:55","reference":98,"name":"BOOK A TABLE 011 6811702 MR 84 HANDICAP","stake":"R55,"stakes":"1st: R34,375 | 2nd: R11,000 | 3rd: R5,500 | 4th: R2,750 | 5th: R1,375","division":"MR84","group":"C","class":"MR 84 HANDICAP","9":{  
            "race":9,"time":"16:30","reference":99,"name":"NEXT FLAMINGO PARK RACE MEETING IS MONDAY 16 NOV FM 60 HANDICAP (F & M)","division":"FM60","group":"F","class":"FM 60 HANDICAP (F & M)","runners":[  

            ]
         }
      }
   }
]

public RunOns DeserializeAccountRunOns(string json)
????????{
????????????var myClass = new JavaScriptSerializer().Deserialize(json);
????????????return(RunOns)myClass;
????????}

公共类RunOns
????{
????????public PubRunOns runons {get;组; }
????}

public class PubRunOns
{
    public string date { get; set; }
    public int day { get; set; }
    public string month { get; set; }
    public int year { get; set; }
    public int club { get; set; }
    public string clubName { get; set; }
    public string itw { get; set; }
    public Array races { get; set; }        

    public static PubRunOns CreateFromData(string[] data)
    {
        return new PubRunOns
        {
            date = data[0],day = Convert.ToInt32(data[1]),month = data[2],year = Convert.ToInt32(data[3]),club = Convert.ToInt32(data[4]),clubName = data[5],itw = data[6],races = data[7].ToCharArray()
        };
    }        
}

public class Races
{
    public int race { get; set; }
    public string time { get; set; }
    public string raceStatus { get; set; }
    public int reference { get; set; }
    public string name { get; set; }
    public string description { get; set; }
    public int distance { get; set; }
    public string stake { get; set; }
    public string stakes { get; set; }
    public string going { get; set; }
    public List<Runner> Runners { get; set; }        
}
public class Runner
{
    public int draw { get; set; }
    public int saddle { get; set; }      
    public string Name { get; set; }
    public string sex { get; set; }
    public string colour { get; set; }
    public int age { get; set; }
}

如果我调用该函数:

var test=  DeserializeAccountRunOns(goldString);

我得到一个例外:
无法将类型为“System.Object []”的对象强制转换为“MyProject.Class”
有任何想法吗?先感谢您.

解决方法

JArray jsonResponse = JArray.Parse(goldString);

foreach (var item in jsonResponse)
{
    JObject jRaces = (JObject)item["races"];
    foreach (var rItem in jRaces)
    {
        string rItemKey = rItem.Key;
        JObject rItemValueJson = (JObject)rItem.Value;
        Races rowsResult = Newtonsoft.Json.JsonConvert.DeserializeObject<Races>(rItemValueJson.ToString());
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读