C#中json格式数据反序列化为Dictionary

需求:从web.config中读取配置节点,经过C#代码处理后显示在前台页面上去,如下图所示:

目的是实现英文缩写加上他的中文描述。

解决方案:

1.存入数据库,存数据库读取然后拼凑字符串(不做讨论)

2.从web.config中读取,存入时存入两行,读两次,然后对应拼凑字符串然后绑定。(不做讨论)

3.从web.config中读取,直接在web.config中存入json格式的数据,读取后经过反序列化后存入Dictionary<string,string>里面,然后进行遍历拼凑。

 

web.config存放样例:

 

C# 反序列化代码:在一个单独的类库里里面

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Web;
 6 using System.Runtime.Serialization;
 7 using System.Configuration;
 8 using System.Runtime.Serialization.Json;
 9 using System.IO;
10 
11 namespace Lib
12 {
13     public class jsonHelper
14     {
15         public static Dictionary<string, string> getJson(string jsonString)
16         {
17             DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Dictionary<string, string>));
18             MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
19             Dictionary<string, string> jsonObject = (Dictionary<string, string>)ser.ReadObject(ms);
20             return jsonObject;
21         }
22     }
23 }

调用代码:Default.aspx页面

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Configuration;
 7 using System.Web.UI.WebControls;
 8 
 9 using Lib;
10 
11 public partial class _Default : System.Web.UI.Page
12 {
13     protected void Page_Load(object sender, EventArgs e)
14     {
15         //从web.config获取json格式数据
16         string jsonText = ConfigurationManager.AppSettings["IOType"].ToString();
17 
18         Dictionary<string, string> json = json = jsonHelper.getJson(jsonText);
19 
20         //遍历拼凑绑定
21         foreach (KeyValuePair<string, string> Kvalue in json)
22         {
23             ddlIOType.Items.Add(new ListItem(Kvalue.Key + " (" + Kvalue.Value+")",Kvalue.Key));
24         }
25     }
26 }

 

显示效果:

注意的地方:

在定义web.config里面的Json的数据时要特别在意,要想反序列化为字典存储,就必须加上Key和Value少了Key和Value不能反序列化成功。

另外需要注意的一点就是json数据的格式,尤其是引号,如果你在程序中定义json格式数据的时候需要在引号前加上转义符才行,如下面的格式:

1 string strJsonText="[{\"Key\":\"USD\",\"Value\":\"美元\"},{\"Key\":\"GBP\",\"Value\":\"英镑\"},{\"Key\":\"EUR\",\"Value\":\"欧元\"}]";

过如向web.config中那样定义,转义符不用自己加,编译器在做转化时帮我们自己添加了。

 

 

posted @ 2012-09-02 10:36  st_gloden  阅读(12444)  评论(0编辑  收藏  举报