[英]How to use same JsonProperty Name on two different class
如何在兩個不同的類上使用相同的jsonProperty名稱。 可能嗎。 請告知我如何實現這一目標。 謝謝
[JsonProperty("Data")]
public RegisteredMailData[] RegisteredMailData { get; set; }
[JsonProperty("Data")]
public SendRecieveShipmentData[] SendRecieveShipmentData { get; set; }
編輯 - 添加模型以便更好地理解
public partial class MailRoomList
{
[JsonProperty("GetListItemsResult")]
public GetListItemsResult GetListItemsResult { get; set; }
}
public partial class GetListItemsResult
{
[JsonProperty("Data")]
public RegisteredMailData[] RegisteredMailData { get; set; }
[JsonProperty("Data")]
public SendRecieveShipmentData[] SendRecieveShipmentData { get; set; }
[JsonProperty("ErrorDetail")]
public ErrorDetail ErrorDetail { get; set; }
[JsonProperty("Result")]
public bool Result { get; set; }
}
public class SendRecieveShipmentData
{
[JsonProperty("__type")]
public string __type { get; set; }
[JsonProperty("Address")]
public object Address { get; set; }
[JsonProperty("Company Name")]
public string CompanyName { get; set; }
[JsonProperty("Doc Type")]
public object DocType { get; set; }
[JsonProperty("Line Manager Approva")]
public string LineManagerApprova { get; set; }
[JsonProperty("Material_x0028_Detail_x0029_")]
public object Material_x0028_Detail_x0029_ { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("PKG Type")]
public object PKGType { get; set; }
[JsonProperty("Request Category")]
public object RequestCategory { get; set; }
[JsonProperty("Sender Address")]
public string SenderAddress { get; set; }
[JsonProperty("Sender Company")]
public object SenderCompany { get; set; }
[JsonProperty("Sender Name")]
public string SenderName { get; set; }
[JsonProperty("Sender Phone")]
public string SenderPhone { get; set; }
[JsonProperty("Sender Zip Code")]
public object SenderZipCode { get; set; }
[JsonProperty("Shipping Companies")]
public string ShippingCompanies { get; set; }
[JsonProperty("Shipping Services")]
public string ShippingServices { get; set; }
[JsonProperty("Telephone")]
public object Telephone { get; set; }
[JsonProperty("Title")]
public string Title { get; set; }
[JsonProperty("ZIP Code")]
public object ZIPCode { get; set; }
}
public partial class RegisteredMailData
{
[JsonProperty("__type")]
public string Type { get; set; }
[JsonProperty("Collecting Date")]
public string CollectingDate { get; set; }
[JsonProperty("Created")]
public string Created { get; set; }
[JsonProperty("Designee ين_x0")]
public string Designeeين_X0 { get; set; }
[JsonProperty("Mobile phone")]
public string MobilePhone { get; set; }
[JsonProperty("Receipent Date")]
public string ReceipentDate { get; set; }
[JsonProperty("Shipping Companies")]
public string ShippingCompanies { get; set; }
[JsonProperty("Status")]
public string Status { get; set; }
[JsonProperty("Tel Number")]
public string TelNumber { get; set; }
[JsonProperty("Title")]
public object Title { get; set; }
}
這似乎是一個XY問題,可以使用泛型來解決
public partial class MailRoomList<T> {
[JsonProperty("GetListItemsResult")]
public GetListItemsResult<T> GetListItemsResult { get; set; }
}
public class GetListItemsResult<T> {
[JsonProperty("Data")]
public T[] Data { get; set; }
[JsonProperty("ErrorDetail")]
public ErrorDetail ErrorDetail { get; set; }
[JsonProperty("Result")]
public bool Result { get; set; }
}
這樣,反序列化就可以了
var result = JsonConvert.DeserializeObject<MailRoomList<RegisteredMailData>>(json);
並可以訪問所需的類型數組
這是不可能的 - 如果你嘗試序列化一個具有相同名稱的2個json屬性的對象,你將得到一個Newtonsoft.Json.JsonSerializationException
演示代碼,使用您的模型類:
var data = new GetListItemsResult
{
SendRecieveShipmentData = new SendRecieveShipmentData[]
{
new SendRecieveShipmentData
{
Name = "foo"
}
},
RegisteredMailData = new RegisteredMailData[]
{
new RegisteredMailData
{
Status = "ok"
}
}
};
string json = JsonConvert.SerializeObject(data);
異常消息:
Newtonsoft.Json.JsonSerializationException:''ConsoleApp3.GetListItemsResult'上已存在名為'Data'的成員。 使用JsonPropertyAttribute指定另一個名稱。
解決方案是提供不同的屬性名稱,例如:
public partial class GetListItemsResult
{
[JsonProperty("MailData")]
public RegisteredMailData[] RegisteredMailData { get; set; }
[JsonProperty("ShipmentData")]
public SendRecieveShipmentData[] SendRecieveShipmentData { get; set; }
[JsonProperty("ErrorDetail")]
public ErrorDetail ErrorDetail { get; set; }
[JsonProperty("Result")]
public bool Result { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.