Json与类对象转换
2014-06-03 16:31
127 查看
Json在js,jquery中可以直接使用,比如下串:
{
"from":"en"
,"to":"zh"
,"trans_result":
[
{"src":"today","dst":"\u4eca\u5929"}
]
}
可以直接使用data.from即可获取到”en”.
但是在c#中不可以。要获取值,有三种方法:
string的方法,找到节点索引、获取子串;
string=>xmlNode,再读节点值
利用Newtonsoft.Json,直接将json与类对象互相转换,这样很方便,之后可以像js一样智能感应的使用对象的属性(即json的节点值)。
前提是:编写对应于json串节点的类!这点可以利用工具解决,生成好后复制类代码即可。详见:
http://json2csharp.com/
http://jsonclassgenerator.codeplex.com/
注意的是:
类属性和json节点值的大小写无关,不影响使用。
json与类对象互相转换后字符串的编码可能变化。这点稍注意。
以下简述Newtonsoft.Json的使用。详见示例:BaiduTranslate.TestConsole
生成类
2.引入对应版本的Newtonsoft.Json。
3.使用obj=>json,或者json=>obj
下面贴代码:是用c#写百度翻译的
View Code
{
"from":"en"
,"to":"zh"
,"trans_result":
[
{"src":"today","dst":"\u4eca\u5929"}
]
}
可以直接使用data.from即可获取到”en”.
但是在c#中不可以。要获取值,有三种方法:
string的方法,找到节点索引、获取子串;
string=>xmlNode,再读节点值
利用Newtonsoft.Json,直接将json与类对象互相转换,这样很方便,之后可以像js一样智能感应的使用对象的属性(即json的节点值)。
前提是:编写对应于json串节点的类!这点可以利用工具解决,生成好后复制类代码即可。详见:
http://json2csharp.com/
http://jsonclassgenerator.codeplex.com/
注意的是:
类属性和json节点值的大小写无关,不影响使用。
json与类对象互相转换后字符串的编码可能变化。这点稍注意。
以下简述Newtonsoft.Json的使用。详见示例:BaiduTranslate.TestConsole
生成类
2.引入对应版本的Newtonsoft.Json。
3.使用obj=>json,或者json=>obj
下面贴代码:是用c#写百度翻译的
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using Newtonsoft.Json; namespace BaiduTranslate.TestConsole { /// <summary> /// json根节点 /// </summary> public class RootObject { public string From { get; set; } public string To { get; set; } public List<TransResult> Trans_result { get; set; } } /// <summary> /// json子节点 /// </summary> public class TransResult { public string Src { get; set; } public string Dst { get; set; } } class Program { static void Main(string[] args) { Console.Write("请输入待翻译单词:"); string english = Console.ReadLine().Trim(); string requestUrl = string.Format(System.Configuration.ConfigurationManager.AppSettings["TransferUrl"],english); HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(requestUrl); WebResponse resp = mRequest.GetResponse(); if (resp != null) { var streamReader = new StreamReader(resp.GetResponseStream()); #region 翻译返回json字符串的形式 //正常结果 //{ // "from":"en" // ,"to":"zh" // ,"trans_result": // [ // {"src":"today","dst":"\u4eca\u5929"} // ] //} //出错结果,则显示如下,但该字符串经过转换后不会出错,RootObject的From\To属性正常有值,Trans_result为null //{"error_code":"52003","error_msg":"UNAUTHORIZED USER","from":"auto","to":"auto","monLang":"zh","query":"today"} #endregion string result = streamReader.ReadToEnd(); //json=>obj,使用Newtonsoft.Json将json字符串转成合适的对象,并将汉字编码也转成成汉字 RootObject data = JsonConvert.DeserializeObject<RootObject>(result); #region obj=>json //使用Newtonsoft.Json将对象转成json字符串 //值和原字符串result相同,只是属性名大写且是汉字 //string strJsonTest = JsonConvert.SerializeObject(data); #endregion if (data.Trans_result != null) Console.WriteLine(string.Format("翻译结果:{0}", data.Trans_result[0].Dst)); else Console.WriteLine("可能是密钥错误或网络错误"); } else { Console.WriteLine("网络错误"); } Console.ReadLine(); } } }
View Code
相关文章推荐
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象[修订081217]
- 转换字符串为json对象的方法
- [转]将List对象列表转换成JSON格式的类
- 转换字符串为json对象的方法
- 利用JSON 让表单与业务对象双向转换
- 应twinsen要求写了个转换js对象为json字符串的例子
- JSON解析之JSONObject对象---js对象转换成java对象
- 转换字符串为json对象的方法
- ajax打印对象时,转换由java对象转为Json格式的String时遇到的Hibernate问题
- 使用JSON-LIB转换JAVA对象
- 使用JSON-LIB转换JAVA对象
- JSON Java端JavaBean/Collection与JSON对象的转换
- 一个实用的 Javascript XML to JSON Object 对象的转换 (JQuery)
- 关于JSon中 eval() 把json 的字符串 转换成 对象
- EXTJS学习系列基础篇:第四篇(转载)作者殷良胜,Ext中有两个很重要的方法,一个是decode;一个是encode.顾名思义,一个是编码,一个是解码,你难道真的这么想吗?严格的说,一个是将json字符串转换成对象;一个是将对象转换成json字符串
- 对象到JSON的转换
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象
- 任意对象转换为JSON格式
- 使用json-lib将java对象转换成json字符串
- 利用JSON 让表单与业务对象双向转换