Json在js,jquery中可以直接使用,比如下串:

{

"from":"en"

,"to":"zh"

,"trans_result":

[

{"src":"today","dst":"\u4eca\u5929"}

]

}

可以直接使用data.from即可获取到”en”.

但是在c#中不可以。要获取值,有三种方法:

  1. string的方法,找到节点索引、获取子串;
  2. string=>xmlNode,再读节点值
  3. 利用Newtonsoft.Json,直接将json与类对象互相转换,这样很方便,之后可以像js一样智能感应的使用对象的属性(即json的节点值)。

前提是:编写对应于json串节点的类!这点可以利用工具解决,生成好后复制类代码即可。详见:

http://json2csharp.com/

http://jsonclassgenerator.codeplex.com/

注意的是:

  1. 类属性和json节点值的大小写无关,不影响使用。
  2. json与类对象互相转换后字符串的编码可能变化。这点稍注意。

以下简述Newtonsoft.Json的使用。详见示例:BaiduTranslate.TestConsole

  1. 生成类

  2.引入对应版本的Newtonsoft.Json。

  3.使用obj=>json,或者json=>obj

下面贴代码:是用c#写百度翻译的

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.IO;
  7. using Newtonsoft.Json;
  8.  
  9. namespace BaiduTranslate.TestConsole
  10. {
  11. /// <summary>
  12. /// json根节点
  13. /// </summary>
  14. public class RootObject
  15. {
  16. public string From { get; set; }
  17. public string To { get; set; }
  18. public List<TransResult> Trans_result { get; set; }
  19. }
  20. /// <summary>
  21. /// json子节点
  22. /// </summary>
  23. public class TransResult
  24. {
  25. public string Src { get; set; }
  26. public string Dst { get; set; }
  27. }
  28.  
  29. class Program
  30. {
  31. static void Main(string[] args)
  32. {
  33. Console.Write("请输入待翻译单词:");
  34. string english = Console.ReadLine().Trim();
  35.  
  36. string requestUrl = string.Format(System.Configuration.ConfigurationManager.AppSettings["TransferUrl"],english);
  37. HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(requestUrl);
  38. WebResponse resp = mRequest.GetResponse();
  39. if (resp != null)
  40. {
  41. var streamReader = new StreamReader(resp.GetResponseStream());
  42. #region 翻译返回json字符串的形式
  43. //正常结果
  44. //{
  45. // "from":"en"
  46. // ,"to":"zh"
  47. // ,"trans_result":
  48. // [
  49. // {"src":"today","dst":"\u4eca\u5929"}
  50. // ]
  51. //}
  52. //出错结果,则显示如下,但该字符串经过转换后不会出错,RootObject的From\To属性正常有值,Trans_result为null
  53. //{"error_code":"52003","error_msg":"UNAUTHORIZED USER","from":"auto","to":"auto","monLang":"zh","query":"today"}
  54. #endregion
  55. string result = streamReader.ReadToEnd();
  56. //json=>obj,使用Newtonsoft.Json将json字符串转成合适的对象,并将汉字编码也转成成汉字
  57. RootObject data = JsonConvert.DeserializeObject<RootObject>(result);
  58.  
  59. #region obj=>json
  60. //使用Newtonsoft.Json将对象转成json字符串
  61. //值和原字符串result相同,只是属性名大写且是汉字
  62. //string strJsonTest = JsonConvert.SerializeObject(data);
  63. #endregion
  64.  
  65. if (data.Trans_result != null)
  66. Console.WriteLine(string.Format("翻译结果:{0}", data.Trans_result[].Dst));
  67. else
  68. Console.WriteLine("可能是密钥错误或网络错误");
  69. }
  70. else
  71. {
  72. Console.WriteLine("网络错误");
  73. }
  74.  
  75. Console.ReadLine();
  76. }
  77. }
  78. }

Json与类对象转换的更多相关文章

  1. jackson 进行json与java对象转换 之三

    2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...

  2. (精华)将json数组和对象转换成List和Map(小龙哥和牛徳鹤的对话)

    将java标准的数据结构ArrayList和HashMap转换成json对象和数组很简单 只需要JSONArray.fromObject(obj);或者JSONObject.fromObject(ob ...

  3. jackson 进行json与java对象转换 之二

    主要用于测试学习用jackson包实现json.对象.Map之间的转换. 1.准备测试用的Java类 (1)Link类 package test; /** * Description: 联系方式,被u ...

  4. jackson 进行json与java对象转换 之一

    代码无真相,为了最简单的说明,我直接上代码. public class User { private String name; private Gender gender; private List& ...

  5. com.alibaba.fastjson.JSON对类对象的序列化与反序列化

    1. 目标 把类的对象存储到字符串可存储 2. 类定义 public interface JsonInterface { } mport com.alibaba.fastjson.JSON; impo ...

  6. jackson 进行json与java对象转换 之四

    jackson简单使用,对象转json,json转对象,json转list   POJO序列化为json字符串: 准备一个POJO: @JsonIgnoreProperties(ignoreUnkno ...

  7. java json字符串与对象转换

    下载引入包gson-2.0.jar 1.字符转数据 final Map map = new HashMap();map.put("contents",    "[{\&q ...

  8. .net序列化和反系列化json与类型对象转换

    先添加程序集:  System.Web.Extensions(在 System.Web.Extensions.dll 中) 引用:using System.Web.Script.Serializati ...

  9. c#序列化和反系列化json与类型对象转换

    先添加程序集:  System.Web.Extensions(在 System.Web.Extensions.dll 中) 引用:using System.Web.Script.Serializati ...

随机推荐

  1. CSS抗锯齿 font-smoothing 属性介绍

    CSS3里面加入了一个“-webkit-font-smoothing”属性. 这个属性可以使页面上的字体抗锯齿,使用后字体看起来会更清晰舒服. 加上之后就顿时感觉页面小清晰了. 淘宝也在用哦! 它有三 ...

  2. Leetcode Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

  3. [小工具]ChemistryHelper

    // 此博文为迁移而来,写于2015年3月25日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vuv7.html 前几天 ...

  4. [深入浅出Windows 10]QuickCharts图表控件库解析

    13.4 QuickCharts图表控件库解析     QuickCharts图表控件是Amcharts公司提供的一个开源的图表控件库,这个控件库支持WPF.Silverlight.和Windows等 ...

  5. Android -- TextView、button方法详解(1)

    1.TextView常规方法 TextView myTextView=null; //声明变量 myTextView=(TextView)findViewById(R.id.myTextView); ...

  6. ssh免密登录

    背景:搭建Hadoop环境需要设置无密码登陆,所谓无密码登陆其实是指通过证书认证的方式登陆,使用一种被称为"公私钥"认证的方式来进行ssh登录. 在linux系统中,ssh是远程登 ...

  7. SQLSERVER远程备份、恢复(转)

    SQLSERVER服务实例名称:192.168.0.2需要备份的数据库名称: a备份机器名称(Client端):192.168.0.3备份机用户:zf 密码:123备份机域名:domain备份机提供备 ...

  8. 队列 Soldier and Cards

    Soldier and Cards 题目: Description Two bored soldiers are playing card war. Their card deck consists ...

  9. 李洪强iOS经典面试题128

    1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...

  10. 理解group by 语句的扩展使用

    在SQL的开发中我们会经常使用group by语句对数据进行分组统计,然而在一些复杂的BI报表开发中会常遇到更复杂的分组需求,单单使用group by 就不能解决我们的问题了,这时我们就需要学习了解一 ...