原文:http://blog.csdn.net/richnaly/article/details/6540475
<!--[if !supportLists]-->一、<!--[endif]-->JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
<!--[if !supportLists]-->二、<!--[endif]-->定义JSON
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <appSettings>
- <!--业务逻辑Id-->
- <add key="BusinessMessageList" value="[{BusinessId:'001',Ip:'10.1.20.5',Port:'6001'}]"/>
- </appSettings>
- </configuration>
<!--[if !supportLists]-->三、<!--[endif]-->读取配置档JSON
- internal class ServerParameter
- {
- internal static readonly string BusinessMessageListJSON = GetAppSettings("BusinessMessageList", ""); // 业务逻辑Message服务URI列表
- internal static List<Dictionary<string, string>> BusinessMessageList = new List<Dictionary<string, string>>();
- #region GetAppSettings
- /// <summary>
- /// 获取配置Value
- /// </summary>
- /// <param name="key"></param>
- /// <param name="defaultValue"></param>
- /// <returns></returns>
- private static string GetAppSettings(string key, string defaultValue)
- {
- if (ConfigurationManager.AppSettings[key] == null)
- {
- return defaultValue;
- }
- else
- {
- return ConfigurationManager.AppSettings[key].ToString();
- }
- }
- #endregion
- }
四、<!--[endif]-->读取JSON方法定义
- public class JSONHelper
- {
- #region From JSON
- /// <summary>
- /// JSON文本转对象,泛型方法
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="jsonText">JSON文本</param>
- /// <returns>指定类型的对象</returns>
- public static T JSONToObject<T>(string jsonText)
- {
- JavaScriptSerializer jss = new JavaScriptSerializer();
- try
- {
- return jss.Deserialize<T>(jsonText);
- }
- catch (Exception ex)
- {
- throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
- }
- }
- /// <summary>
- /// JSON 转List<Dictionary<string, string>>
- /// </summary>
- /// <param name="jsonText"></param>
- /// <returns></returns>
- public static List<Dictionary<string, string>> JSONToList(string jsonText)
- {
- return JSONToObject<List<Dictionary<string, string>>>(jsonText);
- }
- #endregion
- }
<!--[if !supportLists]-->五、<!--[endif]-->控制台输出JSON内容
- class Program
- {
- static void Main(string[] args)
- {
- ServerParameter.BusinessMessageList = JSON.JSONHelper.JSONToList(ServerParameter.BusinessMessageListJSON);
- // 查询BusinessId对应的URI
- string uri =GetBusinessMessageURI("001");
- Console.WriteLine(uri);
- Console.ReadLine();
- }
- /// <summary>
- /// 获取业务逻辑层Message服务的URI
- /// </summary>
- /// <param name="businessId"></param>
- /// <returns></returns>
- internal static string GetBusinessMessageURI(string businessId)
- {
- return GetBusinessURI(businessId, ServerParameter.BusinessMessageList, "BusinessMessageService");
- }
- /// <summary>
- /// 获取业务逻辑层指定服务的URI
- /// </summary>
- /// <param name="businessId"></param>
- /// <param name="businessList"></param>
- /// <param name="serviceName"></param>
- /// <returns></returns>
- internal static string GetBusinessURI(string businessId, List<Dictionary<string, string>> businessList, string serviceName)
- {
- string uri = string.Empty;
- foreach (Dictionary<string, string> dictionary in businessList)
- {
- if (dictionary["BusinessId"].ToString().Trim() == businessId.Trim())
- {
- string ip = dictionary["Ip"].ToString().Trim();
- string port = dictionary["Port"].ToString().Trim();
- uri = "net.tcp://" + ip + ":" + port + "/" + serviceName;
- break;
- }
- }
- return uri;
- }
- }
<!--[if !supportLists]-->六、<!--[endif]-->总结
在WCF的项目应用中,JSON的应用很常见,本文就是其中一种简单的应用.