我有以下的JSON字符串作爲我的問題的例子:反序列化列表<string>從JSON來列出<object>
{
"Code": "Admin",
"Groups":
[
"Administrator",
"Superuser",
"User"
]
}
而且我有一個名爲用戶使用如下代碼類...
[JsonObject(MemberSerialization.OptIn)]
public class User
{
public User (string code)
{
this.Code = code;
}
[JsonProperty]
public string Code { get; set; }
[JsonProperty("Groups")]
private List<UserGroup> groups;
public List<UserGroup> Groups
{
if (groups == null)
groups = new List<UserGroup>();
return groups;
}
}
...和一個名爲用戶組類 - 在這個例子 - 只有這幾行代碼:
public class UserGroup
{
public UserGroup (string code)
{
this.Code = code;
// Some code to fill all the other properties, just by knowing the code.
}
public string Code { get; set; }
// More properties
}
現在,我想要的是,上面顯示的JSON字符串將被反序列化爲一個用戶的實例,並且「Groups」數組中的所有字符串都應該反序列化爲帶有來自每個字符串的實例的List<UserGroup>
。 此外 - 另一種方式 - 應該將用戶序列化爲只包含UserGroups的Code屬性的JSON字符串。
我通常不反序列化,但我創建一個用戶的實例,並使用此代碼填充它...
Newtonsoft.Json.JsonConvert.PopulateObject(jsonString, myUserInstance);
...但如果我用上面所示的JSON字符串運行代碼的所有我得到的是以下情況例外:
Newtonsoft.Json.JsonSerializationException: 'Error converting value "Administrator" to type 'UserGroup'.
我最後的要求是,我想UserGroup
被序列化爲一個字符串數組只有當我序列化User
。當我將一個UserGroup
獨立作爲一個根對象序列化時,它應該正常序列化(具有所有屬性)。 (作爲比較,在Json.Net: Serialize/Deserialize property as a value, not as an object中,對象在所有情況下都被串行化爲一個字符串。)
兩個選項。創建一個自定義JsonConverter,知道如何處理轉換或向類中添加隱式運算符以知道如何從字符串轉換 – Nkosi
是否必須創建從String到UserGroup的JsonConverter以及從字符串到列表的其他方式oder List ? 你是什麼意思加入一個隱式運算符? –
只是好奇,爲什麼不使用這個? [JsonProperty(「Groups」)] public string [] Groups {get;組; } –