转自曾是土木人原文 C#:Json数据反序列化为Dictionary并根据关键字获取指定的值
Json数据:
{ "dataSet": { "header": { "returnCode": "0", "errorInfo": "HTTP请求错误", "version": "V1.0R010", "totalRows": "2000", "returnRows": "20" }, "fieldDefine": { "assetId": "string", "serverIdcId": "int", "inputTime": "datetime" }, "data": { "row": [ { "AssetId": "TCNS2006888", "ServerIdcId": "1", "InputTime": "2008-12-12" }, { "AssetId": "TCNS2006889", "ServerIdcId": "2", "InputTime": "2008-1-1" } ] } } }
问题:如何获取header中的数据行,以便显示在界面上?
效果图:
将json数据转成dictionary的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/// <summary>
/// 将json数据反序列化为Dictionary
/// </summary>
/// <param name="jsonData">json数据</param>
/// <returns></returns>
private
Dictionary<
string
,
object
> JsonToDictionary(
string
jsonData)
{
//实例化JavaScriptSerializer类的新实例
JavaScriptSerializer jss =
new
JavaScriptSerializer();
try
{
//将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象
return
jss.Deserialize<Dictionary<
string
,
object
>>(jsonData);
}
catch
(Exception ex)
{
throw
new
Exception(ex.Message);
}
}
|
使用方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
private
void
button1_Click(
object
sender, EventArgs e)
{
//Json数据
string
json =
"{\"dataSet\":{\"header\":{\"returnCode\":\"0\",\"errorInfo\":\"HTTP请求错误\",\"version\":\"V1.0R010\",\"totalRows\":\"2000\",\"returnRows\":\"20\"},\"fieldDefine\":{\"assetId\":\"string\",\"serverIdcId\":\"int\",\"inputTime\":\"datetime\"},\"data\":{\"row\":[{\"AssetId\":\"TCNS2006888\",\"ServerIdcId\":\"1\",\"InputTime\":\"2008-12-12\"},{\"AssetId\":\"TCNS2006889\",\"ServerIdcId\":\"2\",\"InputTime\":\"2008-1-1\"}]}}}"
;
Dictionary<
string
,
object
> dic = JsonToDictionary(json);
//将Json数据转成dictionary格式
Dictionary<
string
,
object
> dataSet=(Dictionary<
string
,
object
>)dic[
"dataSet"
];
//使用KeyValuePair遍历数据
foreach
(KeyValuePair<
string
,
object
> item
in
dataSet)
{
if
(item.Key.ToString() ==
"header"
)
//获取header数据
{
var
subItem=(Dictionary<
string
,
object
>)item.Value;
foreach
(
var
str
in
subItem)
{
textBox1.AppendText(str.Key +
":"
+ str.Value+
"\r\n"
);
//显示到界面
}
break
;
}
}
}
|
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6841198.html
,如需转载请自行联系原作者