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#写百度翻译的

 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[].Dst));
else
Console.WriteLine("可能是密钥错误或网络错误");
}
else
{
Console.WriteLine("网络错误");
} Console.ReadLine();
}
}
}

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. iOS 'The sandbox is not sync with the Podfile.lock错误

    出现以下错误时, diff: /../Podfile.lock: No such file or directory diff: Manifest.lock: No such file or dire ...

  2. iOS UITextField的returnkey点击事件

      关于隐藏软键盘,网上的办法良莠不齐,大多是通过实现UITextFieldDelegate来隐藏软键盘,该方法代码较多,且在文本框很多的时不好处理.我经过搜索与摸索,找到了最佳的处理办法.(引用的) ...

  3. POJ3469 Dual Core CPU(最小割)

    形象生动的最小割.. #include<cstdio> #include<cstring> #include<queue> #include<algorith ...

  4. BZOJ2082 : [Poi2010]Divine divisor

    将所有数分解质因数,那么第一问就是求指数的最大值,第二问就是$2^{指数最大的质数个数}-1$. 首先将$10^6$以内的质因数全部找到,那么剩下部分的因子$>10^6$,且只有3种情况: 1. ...

  5. ajax请求 json格式和数组格式总结

    php echo json_encode($data); $.ajax({ url:APP+"?a=total&c=collection", //请求的页面 type:&q ...

  6. 20145304 Java第四周学习报告

    20145304<Java程序设计>第四周学习总结 教材学习内容总结 1.继承共同行为: 继承基本上就是避免多个类间重复定义共同行为,关键词为extends. 代码如下: //继承共同行为 ...

  7. 关于transition回调函数的几种写法

    平时工作中经常遇到需要transition动画结束后触发某个功能的问题,但是在映像中好像只见过animate的回调函数, 而transition的很多属性无法在animate中使用,经过一些总结归纳, ...

  8. 友盟微博分享Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from: objc-class-ref in libWeiboSDK.a

    一,分析过程 1.第一次看到这个问题,以为是缺少导入框架或缺少编译文件,导入了微博 sso 框架和编译文件后仍有问题. 2.上网搜了搜也就以上两方面的问题. 3.于是我又仔细看了一遍友盟的分享接口文档 ...

  9. 0代码隐藏GroupedTableView上边多余的间隔

    0代码隐藏GroupedTableView上边多余的间隔 实现诸如支付宝的 “探索” 页面时,最简单的方案是在 Storyboard 中来一个静态 Grouped UITableViewControl ...

  10. 关于Go,你可能不注意的7件事(转的)

    http://tonybai.com/2015/09/17/7-things-you-may-not-pay-attation-to-in-go/ code https://github.com/bi ...