[英]deserializing the json string to object in c# (Newtonsoft.Json)
我想將json字符串反序列化為具有以下格式的c#對象
[{
"data": "{\"SecureId\":null,\"FNAME\":\"WILL\",\"MNAME\":null,\"LNAME\":\"CLINTON\",\"POSTNAME\":\"Mrs.\",\"DOB\":\"6/10/1997\",\"GENDER\":\"M\",\"ORGID\":null}",
"isAvial": true,
"details": "55",
"id": "1999089"}, {
"data": "{\"SecureId\":null,\"FNAME\":\"RIN\",\"MNAME\":null,\"LNAME\":\"MANN\",\"POSTNAME\":\"Jr\",\"DOB\":\"9/16/1997\",\"GENDER\":\"F\",\"ORGID\":null}",
"isAvial": true,
"details": "P2145",
"id": "1999090"}, {
"data": "{\"SecureId\":null,\"FNAME\":\"RIN\",\"MNAME\":null,\"LNAME\":\"MANNING\",\"POSTNAME\":\"M.D.\",\"DOB\":\"9/16/1997\",\"GENDER\":\"F\",\"ORGID\":null}",
"isAvial": true,
"details": "205",
"id": "1999091"}, {
"data": "{\"SecureId\":null,\"FNAME\":\"David\",\"MNAME\":null,\"LNAME\":\"O'PETER\",\"POSTNAME\":\"Dr\",\"DOB\":\"9/6/1997\",\"GENDER\":\"M\",\"ORGID\":null}",
"isAvial": true,
"details": "PM25",
"id": "1999092"}]
我嘗試了以下方法,但是沒有用。 我正在使用Newtonsoft.json
public class DataObj
{
public string isAvial { get; set; }
public string details { get; set; }
public string id { get; set; }
public DataTable data { get; set; }
}
public class JsonOutput
{
public List<DataObj> DetailsObj { get; set; }
}
var desc = JsonConvert.DeserializeObject<List<JsonOutput>>(jsonstring);
感謝幫助..
之所以失敗,是因為您的JSON是數組,但是您試圖反序列化為包含數組的對象,而不是直接反序列化為數組或列表。 同樣,我也非常懷疑您的屬性data
可以反序列化,您可能必須編寫自定義代碼以對DataTable
進行反序列化,或者應使用自定義類型將其更改為通用列表/集合。
public class DataObj
{
public string isAvial { get; set; }
public string details { get; set; }
public string id { get; set; }
// public DataTable data { get; set; } // if this is the FCL defined DataTable you will not be able to deserialize it without some custom code. Better would be to have a strongly typed custom class
}
var desc = JsonConvert.DeserializeObject<List<DataObj>>(jsonstring);
如果“數據”中的格式正確。 然后這將解決
public class DataObj
{
public string isAvial { get; set; }
public string details { get; set; }
public string id { get; set; }
public DataTable data { get; set; }
}
var desc = JsonConvert.DeserializeObject<List<DataObj>>(jsonstring);
否則單獨解析Datatable或類似的東西(DataTable)JsonConvert.DeserializeObject(JsonString,(typeof(DataTable)));
在您的JSON對象中,您有一個DataObj對象的列表,因此(假設DataTable類根據JSON結構正確描述),您應該使用以下內容進行反序列化:
var desc = JsonConvert.DeserializeObject<List<DataObj>>(jsonstring);
嘗試
public class dataC
{
public int SecureId { get; set; }
public string FNAME { get; set; }
public string MNAME { get; set; }
public string LNAME { get; set; }
public string POSTNAME { get; set; }
public string DOB { get; set; }
public string GENDER { get; set; }
public int ORGID { get; set; }
}
public class DataObj
{
public dataC data { get; set; }
public bool isAvial { get; set; }
public string details { get; set; }
public string id { get; set; }
}
JsonConvert.DeserializeObject<List<DataObj>>(jsonstring);
您的反序列化課程應該像
public class RootObject
{
private object _data;
public object data
{
get
{
return _data;
}
set
{
_data = JsonConvert.DeserializeObject<dataS>(value.ToString());
}
}
public bool isAvial { get; set; }
public string details { get; set; }
public string id { get; set; }
}
public class dataS
{
public object SecureId { get; set; }
public string FNAME { get; set; }
public object MNAME { get; set; }
public string LNAME { get; set; }
public string POSTNAME { get; set; }
public string DOB { get; set; }
public string GENDER { get; set; }
public object ORGID { get; set; }
}
和序列化應該像
var tmp = JsonConvert.DeserializeObject<List<RootObject>>(json);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.