C# 用C将JSON反序列化到类#
使用:验证JSON,并使用:json2csharp.com创建C#类 我尝试过使用JSON.Net、RestSharp、.Net DataContractJsonSerializer和JavaScriptSerializer进行反序列化,但都不起作用。该类始终为空,不会引发任何错误 我启用了此处指定的JSON.Net调试,但未引发任何错误 我还尝试了一个简化的Invoice类(无列表),因为我只需要一些基本属性 任何关于我做错了什么的想法都将不胜感激C# 用C将JSON反序列化到类#,c#,json,json-deserialization,C#,Json,Json Deserialization,使用:验证JSON,并使用:json2csharp.com创建C#类 我尝试过使用JSON.Net、RestSharp、.Net DataContractJsonSerializer和JavaScriptSerializer进行反序列化,但都不起作用。该类始终为空,不会引发任何错误 我启用了此处指定的JSON.Net调试,但未引发任何错误 我还尝试了一个简化的Invoice类(无列表),因为我只需要一些基本属性 任何关于我做错了什么的想法都将不胜感激 Invoice ret = JsonConv
Invoice ret = JsonConvert.DeserializeObject<Invoice>(results.Content);
Invoice
不是JSON的顶级类。您应该改用RootObject
:
var ret = JsonConvert.DeserializeObject<RootObject>(results.Content);
var ret=JsonConvert.DeserializeObject(results.Content);
要获取
Invoice
请在反序列化后使用ret.Invoice
。使用从生成的类,您应该反序列化到根对象,而不是发票
public class RootObject
{
public int code { get; set; }
public string message { get; set; }
public Invoice invoice { get; set; }
}
Invoice ret = JsonConvert.DeserializeObject<RootObject>(results.Content).invoice;
公共类根对象
{
公共整数代码{get;set;}
公共字符串消息{get;set;}
公共发票{get;set;}
}
Invoice ret=JsonConvert.DeserializeObject(results.Content).Invoice;
好的,这是因为您试图反序列化成一个发票
,但它实际上嵌套在json中的另一个对象中
public class Wrapper
{
public Invoice invoice { get; set; }
public int code { get; set; }
public int message { get; set; }
}
然后做
Wrapper wrap = JsonConvert.DesrializeObject<Wrapper>(results.Contect);
if (rwap != null)
Invoice i = wrap.Invoice;
Wrapper wrap=JsonConvert.DesrializeObject(results.Contect);
如果(rwap!=null)
发票i=包装发票;
谢谢-就这样。我在最初仅使用Json.Net时尝试过这个方法,但它抛出了一个错误:“输入字符串的格式不正确”,我还进行了其他尝试。输入字符串问题是由于其中一个属性为Int且值为decimal。到那时,近视开始了,我看不见森林,看不见树木。。。
Wrapper wrap = JsonConvert.DesrializeObject<Wrapper>(results.Contect);
if (rwap != null)
Invoice i = wrap.Invoice;