我试图通过获取响应并将其复制/粘贴到Json2CSharp中来解析我的JSON响应,然后将2个新生成的类添加到当前类的底部。 (我不喜欢处理多个班级)。我遇到的问题是当我尝试访问生成的类RootObject
时出现错误
类型' Newtonsoft.Json.JsonSerializationException的未处理异常'发生在Newtonsoft.Json.dll
附加信息:无法将当前JSON数组(例如[1,2,3])反序列化为类型' Test.RootObject'因为该类型需要一个JSON对象(例如{" name":" value"})才能正确反序列化。
即使语法是为我转换的,我也没有改变它。我需要改变什么才能使这成为有效的可行语法?
static void Main(string[] args)
{
string userid= "186exa";
var url = "https/?rst=" + userid;
var connectionClient = new WebClient();
connectionClient.Headers.Set("H", "XXXXXXXXXXXX");
connectionClient.Headers.Set("uname", "user");
connectionClient.Headers.Set("pswd", "pwd");
var content = connectionClient.DownloadString(url);
}
编辑
这是课程 - 将很快发布JSON
public class List
{
public int id { get; set; }
public string cmu { get; set; }
public int lno { get; set; }
public string clr { get; set; }
public string name { get; set; }
public string origin { get; set; }
public string MajorStyle { get; set; }
public string Style { get; set; }
public string styleImage { get; set; }
public int hid { get; set; }
public string bqty { get; set; }
public int cask { get; set; }
public int local { get; set; }
public string city { get; set; }
}
public class RootObject
{
public string style { get; set; }
public List<List> List { get; set; }
}
这是重新发送的JSON
[{"Style":"Cajun","List":[{"id":1225,"cmu":"41.2","lno":10,"name":"Bear","origin":"Lake Sinclair, MO","MajorStyle":"Burn Yo Bottom","Style":"","styleImage":"","hid":1,"bqty":"1.00","cask":0,"local":0,"city":"Amsterdam"}
答案 0 :(得分:1)
您发布的代码有两个问题,
修复这两个问题,代码在向Newtonsoft传递时正确解析RootObject []类型,如下所示:
var o = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject[]>(s);
其中s是JSON字符串。
答案 1 :(得分:1)
首先,您需要将您的类与JSON响应匹配,因此您的类应该看起来像
public class RootObject
{
public string Style { get; set; }
public List[] List { get; set; }
}
public class List
{
public int id { get; set; }
public string cmu { get; set; }
public int lno { get; set; }
public string clr { get; set; }
public string name { get; set; }
public string origin { get; set; }
public string MajorStyle { get; set; }
public string Style { get; set; }
public string styleImage { get; set; }
public int hid { get; set; }
public string bqty { get; set; }
public int cask { get; set; }
public int local { get; set; }
public string city { get; set; }
}
之后,您需要将响应映射到对象
using Newtonsoft.Json; // Need this to work with JsonConvert
string json = @"[
{
'Style':'Cajun',
'List':
[
{
'id':1225,
'cmu':'41.2',
'lno':10,
'name':'Bear',
'origin':'Lake Sinclair, MO',
'MajorStyle':'Burn Yo Bottom',
'Style':'',
'styleImage':'',
'hid':1,
'bqty':'1.00',
'cask':0,
'local':0,
'city':'Amsterdam'
}
]
}
]";
RootObject[] response = JsonConvert.DeserializeObject<RootObject[]>(json);
使用关键字List可能会导致错误,因为还有一个名为List的C#类,所以要小心。