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. data.table包

    data.table 1.生成一个data.table对象 生成一个data.table对象,记为DT. library(data.table) :],V3=round(rnorm(),),V4=:) ...

  2. Oracle查询每天固定时间段的数据

    select * from GPS_LOG t where to_char(t.gps_time,'hh24:mm:ss')>='15:30:00'and to_char(t.gps_time, ...

  3. iOS之04-方法的声明和实现

    本次重点学习和理解OC对象方法的声明和定义 代码: /* 计算器类 方法: 1> 返回 π 2> 计算某个整数的平方 3> 计算两个整数的和 */ #import <Found ...

  4. 前端构建之gulp与常用插件

    gulp是什么? http://gulpjs.com/ 相信你会明白的! 与著名的构建工具grunt相比,有什么优势呢? 易于使用,代码优于配置 高效,不会产生过多的中间文件,减少I/O压力 易于学习 ...

  5. HTML5与移动端web学习笔记

    HTML5 提供了很多新的功能,主要有: 新的 HTML 元素,例如 section, nav, header, footer, article 等 用于绘画的 Canvas 元素 用于多媒体播放的 ...

  6. POJ 2955 Brackets(区间DP)

    题目链接 #include <iostream> #include <cstdio> #include <cstring> #include <vector& ...

  7. 显式激活数据库( ACTIVATE DATABASE)

    某天值班员联系我说,我负责的一套报送系统没有按时生成报文,因为此报警提前量比较大,加上系统经常发生未按时生成报文的事件,也就是没在意,然后不急不慢的到公司,打开系统页面,发现其中一个存储过程跑了将近8 ...

  8. 20145330《Java程序设计》第四次实验报告

    20145330<Java程序设计>第四次实验报告 实验四 Android环境搭建 实验内容 1.搭建Android环境 2.运行Android 3.修改代码,能输出学号 实验步骤 搭建A ...

  9. Bootstrap整合ASP.NET MVC验证、jquery.validate.unobtrusive

    没什么好讲的,上代码: (function ($) { var defaultOptions = { validClass: 'has-success', errorClass: 'has-error ...

  10. Mybatis一级、二级缓存

      Mybatis一级.二级缓存   一级缓存 首先做一个测试,创建一个mapper配置文件和mapper接口,我这里用了最简单的查询来演示. <mapper namespace="c ...