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. 转载:python发送HTTP请求

    1. [代码]GET 方法 import httplib #----------------------------- conn = httplib.HTTPConnection("www. ...

  2. POJ1815 Friendship(字典序最小最小割割边集)

    看了题解.当时也觉得用邻接矩阵挺好写的,直接memset:然而邻接矩阵不懂得改,于是就放开那个模板,写了Dinic.. 方法是,按字典序枚举每一条满流的边,然后令其容量减1,如果最大流改变了,这条边就 ...

  3. CodeForces#275--DIV 2--B(BinarySearch)(!!)

    B. Friends and Presents time limit per test 1 second memory limit per test 256 megabytes input stand ...

  4. 【BZOJ2243】[SDOI2011]染色 树链剖分+线段树

    [BZOJ2243][SDOI2011]染色 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的 ...

  5. Excel 如何引用某表格中的某一列作为数据有效性验证

    1. 首先把数据有效性的列表加入到某个表格中.如下图所示:此表格名称为表5 2. 然后定义名称:公式--定义名称 如下填入信息: 3. 然后再数据有效性验证中输入如下信息即可:

  6. 到底AR初创公司Magic Leap是不是骗子?我看未必

    AR技术和VR技术在今年的发展可谓是日新月异,眼看年末已至,不成想却出现了大新闻.最炙手可热的神秘AR初创公司Magic Leap被硅谷付费媒体The Information(付费读者大多为硅谷资深投 ...

  7. webpack入门教程

    注:本文内容比较基础,供初学者快速入门参考. 更多详细信息请参考官方文档. 本文同步发布于我的博客,欢迎关注^_^ 1. 安装 npm install -g webpack 2. 基本使用 假设项目文 ...

  8. git两种合并方法 比较merge和rebase

    18:01 2015/11/18git两种合并方法 比较merge和rebase其实很简单,就是合并后每个commit提交的id记录的顺序而已注意:重要的是如果公司用了grrit,grrit不允许用m ...

  9. BZOJ3105: [cqoi2013]新Nim游戏 博弈论+线性基

    一个原来写的题. 既然最后是nim游戏,且玩家是先手,则希望第二回合结束后是一个异或和不为0的局面,这样才能必胜. 所以思考一下我们要在第一回合留下线性基 然后就是求线性基,因为要取走的最少,所以排一 ...

  10. git 常用

    1. 打印 git 的 log 日志:git log --after="2016-05-05" --no-merges 2. 可以通过在本地建立分支,来添加自己的注释.上传公司的代 ...