c# json数组动态字段名
根据给定的列名动态生成json数组
List
cols = new List
() { "姓名","性别","年龄"};
1.使用JArray,JObject对象
复制代码
//JObject
JArray arr = new JArray();
JObject obj = new JObject();
foreach (var col in cols)
{
obj[col] = col + "_test";
}
arr.Add(obj);
//获得对象的所有字段名
var itemProperties = ((JObject)arr[0]).Properties().ToList();
foreach (var item in itemProperties)
{
var v = item.Name+":"+item.Value;
}
string json1 = JsonEncode(arr);
复制代码
2.使用Datatable
复制代码
复制代码
//Datatable
DataTable dt = new DataTable();
var row = dt.NewRow();
foreach (var col in cols)
{
dt.Columns.Add(col);
row[col] = col + "_test";
}
dt.Rows.Add(row);
string json2 = JsonEncode(dt);
//var colName=dt.Columns[0].ColumnName;
复制代码
复制代码
3.使用Dynamic对象
复制代码
//Dynamic http://www.cnblogs.com/xuejianxiyang/p/4964739.html
dynamic dobj = new System.Dynamic.ExpandoObject();
var dic = (IDictionary
)dobj;
foreach (var col in cols)
{
dic[col] = col + "_test";
}
foreach (var fieldItem in (IDictionary
)dobj)
{//获得对象的所有字段名
var v = (fieldItem.Key + ": " + fieldItem.Value);
}
List
list = new List
();
list.Add(dobj);
string json3 = JsonEncode(list);
复制代码
public static string JsonEncode
(T jsonstruct, bool withIndentFormat = true)
{
//var setting=new JsonSerializerSettings();
//setting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
Formatting format = Formatting.Indented;
if (!withIndentFormat)
{
format = Formatting.None;
}
return JsonConvert.SerializeObject(jsonstruct, format,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
PreserveReferencesHandling = PreserveReferencesHandling.None
});
}