[英]Deserialize list of objects in C#
我使用JsonConvert序列化一個 object 並將其保存在數據庫中。
這是我保存在數據庫中的序列化字符串的示例:
[{"matId":"1","value":"44"},{"matId":"2","value":"55"},{"matId":"4","value":"77"}]
現在,當我從數據庫中獲取這個字符串時,它有很多這樣的反斜杠:
"[{\"matId\":\"1\",\"value\":\"44\"},{\"matId\":\"2\",\"value\":\"55\"},{\"matId\":\"4\",\"value\":\"77\"}]"
因此,我無法Deserialize
它。
.Replace("\\","")
方法對此沒有任何影響。 我不知道為什么。
您必須使用JsonConvert.Deserialize
方法。
您的json
字符串包含在方括號([])
,因此它被解釋為數組。 因此,您需要將其deserialize
一個class
type
集合,例如我們稱其為MyClass
。
public class MyClass
{
public int matId { get; set; }
public int value { get; set; }
}
這是Deserialize
方法。
var results=JsonConvert.DeserializeObject<List<MyClass>>(json);
反斜杠代表序列化對象。 您需要反序列化您的 List 對象。 您可以嘗試使用泛型:
public List<T> Deserialize<T>(string path)
{
return JsonConvert.DeserializeObject<List<T>>(path);
}
MyClass result = JsonConvert.DeserializeObject<MyClass>(jsonString);
在調試時查看 json 字符串時要小心。 在 Visual Studio 中,它需要將值格式化為字符串。 為此,它會添加 " 以便在實際值不包含它們時處理它。這就是替換不起作用的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.