Json与类对象转换
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://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[].Dst));
else
Console.WriteLine("可能是密钥错误或网络错误");
}
else
{
Console.WriteLine("网络错误");
} Console.ReadLine();
}
}
}
Json与类对象转换的更多相关文章
- jackson 进行json与java对象转换 之三
2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...
- (精华)将json数组和对象转换成List和Map(小龙哥和牛徳鹤的对话)
将java标准的数据结构ArrayList和HashMap转换成json对象和数组很简单 只需要JSONArray.fromObject(obj);或者JSONObject.fromObject(ob ...
- jackson 进行json与java对象转换 之二
主要用于测试学习用jackson包实现json.对象.Map之间的转换. 1.准备测试用的Java类 (1)Link类 package test; /** * Description: 联系方式,被u ...
- jackson 进行json与java对象转换 之一
代码无真相,为了最简单的说明,我直接上代码. public class User { private String name; private Gender gender; private List& ...
- com.alibaba.fastjson.JSON对类对象的序列化与反序列化
1. 目标 把类的对象存储到字符串可存储 2. 类定义 public interface JsonInterface { } mport com.alibaba.fastjson.JSON; impo ...
- jackson 进行json与java对象转换 之四
jackson简单使用,对象转json,json转对象,json转list POJO序列化为json字符串: 准备一个POJO: @JsonIgnoreProperties(ignoreUnkno ...
- java json字符串与对象转换
下载引入包gson-2.0.jar 1.字符转数据 final Map map = new HashMap();map.put("contents", "[{\&q ...
- .net序列化和反系列化json与类型对象转换
先添加程序集: System.Web.Extensions(在 System.Web.Extensions.dll 中) 引用:using System.Web.Script.Serializati ...
- c#序列化和反系列化json与类型对象转换
先添加程序集: System.Web.Extensions(在 System.Web.Extensions.dll 中) 引用:using System.Web.Script.Serializati ...
随机推荐
- 转载:python发送HTTP请求
1. [代码]GET 方法 import httplib #----------------------------- conn = httplib.HTTPConnection("www. ...
- POJ1815 Friendship(字典序最小最小割割边集)
看了题解.当时也觉得用邻接矩阵挺好写的,直接memset:然而邻接矩阵不懂得改,于是就放开那个模板,写了Dinic.. 方法是,按字典序枚举每一条满流的边,然后令其容量减1,如果最大流改变了,这条边就 ...
- CodeForces#275--DIV 2--B(BinarySearch)(!!)
B. Friends and Presents time limit per test 1 second memory limit per test 256 megabytes input stand ...
- 【BZOJ2243】[SDOI2011]染色 树链剖分+线段树
[BZOJ2243][SDOI2011]染色 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的 ...
- Excel 如何引用某表格中的某一列作为数据有效性验证
1. 首先把数据有效性的列表加入到某个表格中.如下图所示:此表格名称为表5 2. 然后定义名称:公式--定义名称 如下填入信息: 3. 然后再数据有效性验证中输入如下信息即可:
- 到底AR初创公司Magic Leap是不是骗子?我看未必
AR技术和VR技术在今年的发展可谓是日新月异,眼看年末已至,不成想却出现了大新闻.最炙手可热的神秘AR初创公司Magic Leap被硅谷付费媒体The Information(付费读者大多为硅谷资深投 ...
- webpack入门教程
注:本文内容比较基础,供初学者快速入门参考. 更多详细信息请参考官方文档. 本文同步发布于我的博客,欢迎关注^_^ 1. 安装 npm install -g webpack 2. 基本使用 假设项目文 ...
- git两种合并方法 比较merge和rebase
18:01 2015/11/18git两种合并方法 比较merge和rebase其实很简单,就是合并后每个commit提交的id记录的顺序而已注意:重要的是如果公司用了grrit,grrit不允许用m ...
- BZOJ3105: [cqoi2013]新Nim游戏 博弈论+线性基
一个原来写的题. 既然最后是nim游戏,且玩家是先手,则希望第二回合结束后是一个异或和不为0的局面,这样才能必胜. 所以思考一下我们要在第一回合留下线性基 然后就是求线性基,因为要取走的最少,所以排一 ...
- git 常用
1. 打印 git 的 log 日志:git log --after="2016-05-05" --no-merges 2. 可以通过在本地建立分支,来添加自己的注释.上传公司的代 ...