将 json 对象反序列化为 C# 对象
Deserlializing json object to C# object
我有 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;
}
然后我有这个错误:
Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[oRouter.Model.Wrapper.Partsfinder]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path '[0].partsfinder.lvl0', line 8, position 7.
请帮我修正错误。非常感谢。
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; }
}
https://xxxxx/export/test/xxx.json
必须 return 喜欢 that
并加上classWrapper
public class Wrapper {
public List<Item_Partsfinder> Items {get; set;}
}
我有 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;
}
然后我有这个错误:
Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[oRouter.Model.Wrapper.Partsfinder]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly. To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object. Path '[0].partsfinder.lvl0', line 8, position 7.
请帮我修正错误。非常感谢。
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; }
}
https://xxxxx/export/test/xxx.json
必须 return 喜欢 that
并加上classWrapper
public class Wrapper {
public List<Item_Partsfinder> Items {get; set;}
}