完整的json 是這樣的結構的
[
{
"A" :1,
"B" :1,
"C" :1
}
]
但是如果其中的元素為空,則不會有內容,比如我需要把下面json轉換為datatable怎么轉
[
{
"A" :1,
"B" :1,
"C" :1
},
{
"A" :2,
"C" :2
},
{
"A" :3,
"B" :3,
}
]
轉換的datatable 應是這樣的
A B C
1 1 1
2 2
3 3
uj5u.com熱心網友回復:
把 json 字串反序列化成 json 物件,再將各個 json 物件的屬性值寫入 datatable。如果 json 字串中沒有與 json 物體類定義的屬性,那么該屬性值反序列化時會自動賦值為默認值。uj5u.com熱心網友回復:
如法直接用JSON序列化,你可以遍歷所有json字串,每一個都先序列化成key/value,然后再遍歷每一個key,最后加上沒有的json,最后再一起序列化uj5u.com熱心網友回復:
1.將物件模型建立起來,比如叫做Model1,有三個可為空的整型(int?)屬性:ABC;2.拿到json后,反序列化為Model1型別的陣列或List等,取名Model1List
3.將Model1List(物件串列)轉datatable你應該會吧?
uj5u.com熱心網友回復:
只需要兩步第一步
/// <summary>
/// 將json格式的字串轉換為list格式的資料
/// </summary>
/// <param name="jsonStr">要轉換的json格式字串</param>
/// <returns>轉換后list格式的資料</returns>
public static List<T> JsonToList<T>(string jsonStr)
{
try
{
if (jsonStr.StartsWith("[") && jsonStr.EndsWith("]"))
{
List<T> t = Newtonsoft.Json.JsonConvert.DeserializeObject<List<T>>(jsonStr);
return t;
}
else
{
List<T> t = Newtonsoft.Json.JsonConvert.DeserializeObject<List<T>>("[" + jsonStr + "]");
return t;
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
return null;
}
}
第二步
/// <summary>
/// 將集合list類轉換成DataTable
/// </summary>
/// <param name="list">集合</param>
/// <returns></returns>
public static DataTable ToDataTable(IList list)
{
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
result.Columns.Add(pi.Name, pi.PropertyType);
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/16238.html
標籤:C#
下一篇:大家推薦學習C#的書籍
