using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Newtonsoft.Json;
using System.Web.Script.Serialization;
using System.Collections;
namespace 字典Demo
{
public partial class WebForm1 : System.Web.UI.Page
{
public string json = "{\"dataSet\":{\"header\":{\"returnCode\":\"0\",\"errorInfo\":\"HTTP请求错误\",\"version\":\"V1.0R010\",\"totalRows\":\"2000\",\"returnRows\":\"20\",\"ImageUrl\":\"http://img.baidu.com/img/logo-zhidao.gif\"},\"fieldDefine\":{\"assetId\":\"bloodstrike\",\"serverIdcId\":\"int\",\"inputTime\":\"datetime\"},\"data\":{\"row\":[{\"AssetId\":\"TCNS2006888\",\"ServerIdcId\":\"1\",\"InputTime\":\"2008-12-12\",\"AssetName\":\"月\"},{\"AssetId\":\"TCNS2006889\",\"ServerIdcId\":\"2\",\"InputTime\":\"2008-1-1\",\"AssetName\":\"亮\"}]}}}";
protected void Page_Load(object sender, EventArgs e)
{
DictJson();
}
/// <summary>
/// JSON配合字典使用
/// </summary>
public void DictJson()
{
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)
//{
// //显示到界面
// if (str.Key.ToString() == "ImageUrl")
// {
// this.Image1.Width = 137;
// this.Image1.Height = 46;
// this.Image1.ImageUrl = str.Value.ToString();
// }
// Response.Write("<li>" + str.Key + ":" + str.Value + "</li>");
//}
//方法二,读取字典中指定的参数
this.Image1.Width = 137;
this.Image1.Height = 46;
this.Image1.ImageUrl = subItem["ImageUrl"].ToString();
}
if (item.Key.ToString() == "fieldDefine")//获取fieldDefine数据
{
var subItem = (Dictionary<string, object>)item.Value;
Response.Write("<li>" +subItem["assetId"].ToString() + "</li>");
}
}
}
/// <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);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
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)
{
//找到data数据字典
if (item.Key.ToString() == "data")//获取data数据
{
var subItem = (Dictionary<string, object>)item.Value;
//data中遍历数据
foreach (var str in subItem)
{
//判断是否有row数据
if (str.Key.ToString() == "row")
{
//如果有row ,通过字典方法进行字典数据创建
var subRow = (Dictionary<string, object>)item.Value;
//row里是数组数据,因此将字典数据重新塞入数组中排列
foreach (ArrayList array in subRow.Values)
{
//通过数组的总量,来设置循环读取次数
for (int i=0; i < array.Count; i++)
{
//将数组数据重新塞入字典中 遍历输出
var subArr = (Dictionary<string, object>)array[i];
//foreach (var strArr in subArr)
//{
// Response.Write("<li>" + strArr.Key + ":" + strArr.Value + "</li>");
//}
this.Label1.Text = subArr["AssetName"].ToString();
}
}
}
}
}
}
}
}
}
c# 将JSON解析,字典Demo
猜你喜欢
转载自blog.csdn.net/ZeroRm/article/details/78982818
今日推荐
周排行