C# 如何使用Newtonsoft.JSON反序列化JSON数组
嗨,这是我的Json数据,但我不能反序列化它。 我只想检查“状态”值。(第一个对象“状态”0,第二个对象“状态”1) 示例定义:C# 如何使用Newtonsoft.JSON反序列化JSON数组,c#,json,deserialization,C#,Json,Deserialization,嗨,这是我的Json数据,但我不能反序列化它。 我只想检查“状态”值。(第一个对象“状态”0,第二个对象“状态”1) 示例定义: [ { "receiver_tax_id":"1002", "total":"6949,15", "receiver_company_name":"Das Company", "receiver_email":"info@another.com", "status":0 }, {
[
{
"receiver_tax_id":"1002",
"total":"6949,15",
"receiver_company_name":"Das Company",
"receiver_email":"info@another.com",
"status":0
},
{
"receiver_tax_id":"1001",
"total":"39222,49",
"receiver_company_name":"SAD company",
"receiver_email":"info@mail.com",
"status":1
}
]
反序列化代码:
public class Example
{
[JsonProperty("receiver_tax_id")]
public string receiver_tax_id { get; set; }
[JsonProperty("total")]
public string total { get; set; }
[JsonProperty("receiver_company_name")]
public string receiver_company_name { get; set; }
[JsonProperty("receiver_email")]
public string receiver_email { get; set; }
[JsonProperty("status")]
public int status { get; set; }
}
请尝试以下代码:
var des = (Example)JsonConvert.DeserializeObject(responseString, typeof(Example));
Console.WriteLine(des.status[0].ToString());
反序列化如下所示:
public class Receiver
{
public string receiver_tax_id { get; set;}
public string total { get; set;}
public string receiver_company_name { get; set;}
public int status { get; set;}
}
var result=JsonConvert.DeserializeObject(responseString);
var status=结果[0]。状态;
您正在尝试将数组反序列化为示例对象。请尝试对列表执行此操作:
var result = JsonConvert.DeserializeObject<List<Receiver>>(responseString);
var status = result[0].status;
var des=JsonConvert.DeserializeObject(responseString,typeof(List))作为列表;
如果您只关心检查状态
,则可以使用.NET()
这样,您甚至不需要
示例
类 从您的代码和JSON样本来看,问题似乎是您实际上在反序列化一个列表
,而不是一个示例
我会做两件事:
JsonProperty
属性作为前缀:
dynamic deserialized = JObject.Parse(responseString);
int status1 = deserialized[0].status;
int status2 = deserialized[1].status;
//
// do whatever
JsonConvert.DeserializeObject
重载而不是当前使用的非通用版本反序列化列表
:
public class Example
{
[JsonProperty("receiver_tax_id")]
public string ReceiverTaxId { get; set; }
[JsonProperty("total")]
public string Total { get; set; }
[JsonProperty("receiver_company_name")]
public string ReceiverCompanyName { get; set; }
[JsonProperty("receiver_email")]
public string ReceiverEmail { get; set; }
[JsonProperty("status")]
public int Status{ get; set; }
}
var des=JsonConvert.DeserializeObject(responseString);
Console.WriteLine(des[0]。状态);
向我们展示尝试反序列化JSON.var des=(示例)JsonConvert.DeserializeObject(responseString,typeof(示例))的代码;Console.WriteLine(des.status[0].ToString());而
Example
是如何定义的?[JsonProperty(“receiver_tax_id”)]公共字符串receiver_tax_id{get;set;}[JsonProperty(“total”)。。。。。我为每个变量添加了JsonProperty如果您使用[JsonProperty(“receiver\u tax\u id”)]
您可以根据需要命名您的属性<代码>[JsonProperty(“status”)]public int MyOwnStatus{get;set;}我不知道。谢谢:)应该是JArray.Parse(或JToken.Parse+检查反序列化。如果我们不确定输入上是否有数组,请键入)。如果您遇到此问题,请注意此答案。在发生此错误的对象中,我有一个字符串数组作为字段。这使我无法意识到我真正的问题是,我在顶层得到了一个项目列表,而该对象中的字符串数组很好。
public class Example
{
[JsonProperty("receiver_tax_id")]
public string ReceiverTaxId { get; set; }
[JsonProperty("total")]
public string Total { get; set; }
[JsonProperty("receiver_company_name")]
public string ReceiverCompanyName { get; set; }
[JsonProperty("receiver_email")]
public string ReceiverEmail { get; set; }
[JsonProperty("status")]
public int Status{ get; set; }
}
var des = JsonConvert.DeserializeObject<List<Example>>(responseString);
Console.WriteLine(des[0].Status);