[英]How to convert two json properties that have same name into properties in same class
我有一個JSON對象:
{
"user": {
"id": "xxx"
},
"session": {
"id": "xxx"
}
}
現在我需要將json轉換為類,
我的默認答案是將屬性寫為UserID,sessionID
但是從可讀性的角度來看,我希望像User.ID和session.ID這樣的東西(不可能)。
創建一個基類:
public class BaseId //Come up with a better name
{
public string Id { get; set; }
}
然后從這些類繼承它:
public class User : BaseId
{
//Other stuff if you want
}
public class Session : BaseId
{
//Other stuff if you want
}
但是,只有在User和Session彼此具有唯一差異(但顯然共享ID屬性)的情況下,才應執行此操作。
如果只需要兩個不同的變量,則將它們解析為名為user
和session
的BaseId類的兩個不同實例(顯然,不需要這種具體的類)
您可以使用Newtonsoft.Json
JsonProperty
類
public class Model
{
[JsonProperty(PropertyName = "UserId")]
public int ID { get; set; }
[JsonProperty(PropertyName = "SessionId")]
public int ID1 { get; set; }
}
我不確定我是否完全理解這個問題。 如果我要這樣做,它將看起來像這樣:
public class Foo
{
[JsonProperty("user")]
public User UserIdentity { get; set; }
[JsonProperty("session")]
public Session CurrentSession { get; set; }
}
public class User
{
[JsonProperty("id")]
string Id { get; set; }
}
public class Session
{
[JsonProperty("id")]
string Id { get; set; }
}
public class User
{
[JsonProperty("id")]
public string id { get; set; }
}
public class Session
{
[JsonProperty("id")]
public string id { get; set; }
}
public class MyJson
{
[JsonProperty("user")]
private User user { get; set; }
[JsonProperty("session")]
private Session session { get; set; }
public string UserID { get { return user.id; } }
public string SessionID { get { return session.id; } }
}
您可以編寫這種類型的模型,您可以根據請求的UserID和SessionID類型獲取數據。
在下面的示例代碼中進行測試
var teststring = JsonConvert.DeserializeObject<JObject>("{\"user\": {\"id\": \"xxx\"},\"session\": {\"id\": \"xxx\"}");
var data = JsonConvert.DeserializeObject<MyJson>(teststring.ToString());
var session = data.SessionID;
var userId = data.UserID;
我被正確檢查了。 工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.