我目前正在构建一个方法,该方法DataRow
从类型化的 DataSet 中获取一个类型的对象,然后返回DataRow 中字段的JSON格式的字符串(用于 Web 服务)。
通过使用System.Reflection
,我正在做这样的事情:
public string getJson(DataRow r)
{
Type controlType = r.GetType();
PropertyInfo[] props = controlType.GetProperties();
foreach (PropertyInfo controlProperty in props)
{
}
return "";
}
然后在foreach
语句中,我将迭代每个字段并获取字段名称和值,并将其格式化为 JSON。
问题是,当迭代props
(类型PropertyInfo[]
)时,我得到了我不想被迭代的属性:
替代文字 http://img88.imageshack.us/img88/2001/datarowreflectionht0.gif
从上图中可以看出,我只需要数组0 - 11
中的字段props
,因为这些字段是这个特定类型行的“真实字段”。
所以我的问题是,我怎样才能只获取 Typed DataRow 的字段,而不是其他“元数据”?
[更新解决方案]
正如Mehrdad Afshari建议的那样Reflection
,我使用的是Table.Columns
数组而不是 using 。
这是完成的功能:
public string GetJson(DataRow r)
{
int index = 0;
StringBuilder json = new StringBuilder();
foreach (DataColumn item in r.Table.Columns)
{
json.Append(String.Format("\"{0}\" : \"{1}\"", item.ColumnName, r[item.ColumnName].ToString()));
if (index < r.Table.Columns.Count - 1)
{
json.Append(", ");
}
index++;
}
return "{" + json.ToString() + "}";
}