我收到了JSON对象的响应,因此需要将其反序列化以成为C#对象。
{
"sku": "00300X123",
"name": "Upxx Pipe (Subaru)",
"partsfinder":{
"lvl0":["2008","2011","2007","2001","2012","2007","2003","2013","2008","2004","2014","2009","2005","2004","2009","2005","2004","2010","2006","2009","2011","2007","2001","2012","2008","2003","2013","2008","2004","2014","2009","2005","2005","2010","2006","2005","2010","2006","2006","2015","2011","2007","2002","2012","2008","2003","2013","2009","2004","2014","2009","2005","2002","2010","2006","2006","2011","2012","2007","2011","2007","2002","2012","2008","2004","2013","2009","2004","2014","2009","2005","2003","2010","2006","2007"],"lvl1":["2008 > Subaru","2011 > Subaru","2007 > Subaru","2001 > Subaru","2012 > Subaru","2007 > Subaru","2003 > Subaru","2013 > Subaru","2008 > Subaru","2004 > Subaru","2014 > Subaru","2009 > Subaru","2005 > Subaru","2004 > Subaru","2009 > Subaru","2005 > Subaru","2004 > Subaru","2010 > Subaru","2006 > Subaru","2009 > Subaru","2011 > Subaru","2007 > Subaru","2001 > Subaru","2012 > Subaru","2008 > Subaru","2003 > Subaru","2013 > Subaru","2008 > Subaru","2004 > Subaru","2014 > Subaru","2009 > Subaru","2005 > Subaru","2005 > Subaru","2010 > Subaru","2006 > Subaru","2005 > Subaru","2010 > Subaru","2006 > Subaru","2006 > Subaru","2015 > Subaru","2011 > Subaru","2007 > Subaru","2002 > Subaru","2012 > Subaru","2008 > Subaru","2003 > Subaru","2013 > Subaru","2009 > Subaru","2004 > Subaru","2014 > Subaru","2009 > Subaru","2005 > Subaru","2002 > Subaru","2010 > Subaru","2006 > Subaru","2006 > Subaru","2011 > Subaru","2012 > Subaru","2007 > Subaru","2011 > Subaru","2007 > Subaru","2002 > Subaru","2012 > Subaru","2008 > Subaru","2004 > Subaru","2013 > Subaru","2009 > Subaru","2004 > Subaru","2014 > Subaru","2009 > Subaru","2005 > Subaru","2003 > Subaru","2010 > Subaru","2006 > Subaru","2007 > Subaru"],"lvl2":["2008 > Subaru > Outback (Gen2)","2011 > Subaru > WRX Sedan (GJ)","2007 > Subaru > Liberty Sedan GT Spec B (BL)","2001 > Subaru > WRX Sedan (GD)","2012 > Subaru > WRX Sedan (GJ)","2007 > Subaru > WRX Wagon (GG)","2003 > Subaru > Forester (SG)","2013 > Subaru > WRX Sedan (GJ)","2008 > Subaru > STi Hatch (GH)","2004 > Subaru > Liberty Sedan GT Spec B (BL)","2014 > Subaru > WRX Sedan (GJ)","2009 > Subaru > Liberty Wagon GT Spec B (BP)","2005 > Subaru > Forester (SG)","2004 > Subaru > STi Sedan (GD)","2009 > Subaru > WRX Sedan (GE)","2005 > Subaru > WRX Wagon (GG)","2004 > Subaru > Outback (Gen2)","2010 > Subaru > WRX Hatch (GH)","2006 > Subaru > STi Sedan (GD)","2009 > Subaru > Outback (Gen2)","2011 > Subaru > WRX Hatch (GP)","2007 > Subaru > Liberty Wagon GT Spec B (BP)","2001 > Subaru > WRX Wagon (GG)","2012 > Subaru > WRX Hatch (GP)","2008 > Subaru > Forester (SH)","2003 > Subaru > WRX Sedan (GD)","2013 > Subaru > WRX Hatch (GP)","2008 > Subaru > WRX Hatch (GH)","2004 > Subaru > Liberty Wagon GT Spec B (BP)","2014 > Subaru > WRX Hatch (GP)","2009 > Subaru > STi Hatch (GR)","2005 > Subaru > Liberty Sedan GT Spec B (BL)","2005 > Subaru > STi Sedan (GD)","2010 > Subaru > Forester (SH)","2006 > Subaru > Forester (SG)","2005 > Subaru > Outback (Gen2)","2010 > Subaru > WRX Sedan (GE)","2006 > Subaru > WRX Sedan (GD)","2006 > Subaru > WRX Wagon (GG)","2015 > Subaru > STi Sedan","2011 > Subaru > STi Sedan (GJ)","2007 > Subaru > STi Sedan (GD)","2002 > Subaru > WRX Sedan (GD)","2012 > Subaru > STi Sedan (GJ)","2008 > Subaru > Liberty Sedan GT Spec B (BL)","2003 > Subaru > WRX Wagon (GG)","2013 > Subaru > STi Sedan (GJ)","2009 > Subaru > Forester (SH)","2004 > Subaru > WRX Sedan (GD)","2014 > Subaru > STi Sedan (GJ)","2009 > Subaru > STi Sedan (GV)","2005 > Subaru > Liberty Wagon GT Spec B (BP)","2002 > Subaru > STi Sedan (GD)","2010 > Subaru > STi Hatch (GR)","2006 > Subaru > Liberty Sedan GT Spec B (BL)","2006 > Subaru > Outback (Gen2)","2011 > Subaru > Forester (SH)","2012 > Subaru > Forester (SH)","2007 > Subaru > Forester (SG)","2011 > Subaru > STi Hatch (GP)","2007 > Subaru > WRX Sedan (GD)","2002 > Subaru > WRX Wagon (GG)","2012 > Subaru > STi Hatch (GP)","2008 > Subaru > Liberty Wagon GT Spec B (BP)","2004 > Subaru > Forester (SG)","2013 > Subaru > STi Hatch (GP)","2009 > Subaru > Liberty Sedan GT Spec B (BL)","2004 > Subaru > WRX Wagon (GG)","2014 > Subaru > STi Hatch (GP)","2009 > Subaru > WRX Hatch (GH)","2005 > Subaru > WRX Sedan (GD)","2003 > Subaru > STi Sedan (GD)","2010 > Subaru > STi Sedan (GV)","2006 > Subaru > Liberty Wagon GT Spec B (BP)","2007 > Subaru > Outback (Gen2)"]
}
},
{
"sku": "00339980112",
"name": "Twin Supertone",
"partsfinder":{
"lvl0":["Universal Parts"]
}
}
然后,我有了这些类来存储值:
public class Item_Partsfinder
{
public string sku { get; set; }
public string name { get; set; }
public List<Partsfinder> partsfinder { get; set; }
}
public class Partsfinder
{
public List<string> lvl0 { get; set; }
}
以下是获取json并进行转换的代码:
string jobsUrl = string.Format("https://xxxxx/export/test/xxx.json");
var uri = new Uri(string.Format(jobsUrl, string.Empty));
try
{
var response = client.GetAsync(uri, HttpCompletionOption.ResponseHeadersRead).Result;
var responseData = response.Content.ReadAsStringAsync();
responseData.Wait();
if (responseData.IsCompleted)
{
itemPartsfinder = JsonConvert.DeserializeObject<List<Item_Partsfinder>>(responseData.Result);
}
}
catch (Exception e)
{
var me = e.Message;
}
然后我出现此错误:
无法将当前JSON对象(例如{“ name”:“ value”})反序列化为类型'System.Collections.Generic.List`1 [oRouter.Model.Wrapper.Partsfinder]',因为该类型需要JSON数组(例如[1,2,3])正确反序列化。 要解决此错误,可以将JSON更改为JSON数组(例如[1,2,3]),也可以更改反序列化类型,使其成为普通的.NET类型(例如,不像整数这样的原始类型,也不像这样的集合类型数组或列表),可以从JSON对象反序列化。还可以将JsonObjectAttribute添加到类型中,以强制其从JSON对象反序列化。 路径'[0] .partsfinder.lvl0',第8行,位置7。
请帮助我修复该错误。非常感谢。
答案 0 :(得分:3)
partsfinder是一个对象,而不是数组。
尝试
public class Item_Partsfinder
{
public string sku { get; set; }
public string name { get; set; }
public Partsfinder partsfinder { get; set; }
}
public class Partsfinder
{
public List<string> lvl0 { get; set; }
}
答案 1 :(得分:-1)
https://xxxxx/export/test/xxx.json
必须像that一样返回
并添加类Wrapper
public class Wrapper {
public List<Item_Partsfinder> Items {get; set;}
}