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 ...
随机推荐
- HDU4511 小明系列故事——女友的考验(AC自动机 + DP)
题目大概说有平面有n个点,从1点出发走到n点,每一步只能走到序号比当前更大的点且走的序列不能包含给定的m个序列中的任何一个,问1走到n的最短路. 用m个序列建个AC自动机,后缀包含整个序列的结点标记一 ...
- Repeater 双向排序
做项目的时候,DataGrid ,DataList,Repeater 三个控件都是很优秀的数据显示控件,DataGrid的方便,简单易用,功能强大,但对性能会有所影响,在loading页面的时候大 ...
- uva748 - Exponentiation
import java.io.*; import java.text.*; import java.util.*; import java.math.*; public class Exponenti ...
- Redis Java API
package cn.ac.iscas.pebble.dc.redispool; import java.io.File; import java.io.FileOutputStream; impor ...
- font 和 text 字和文本操作
- java中的List记录是否完全匹配方法
今天要说的是给List分组,然后用Map来封装,可能你看了以后还是有一些模糊. 先看一下项目结构图: User类是一个VO类,主要逻辑还是在MapTestBak上面. 运行效果: 原理图: 1.在st ...
- Windows 下安装使用docker swarm machine docker toolbox
下载docker 集成安装环境 http://get.daocloud.io/#install-toolbox 这个网站很不错,下载 这个集成了 docker docker-machine ,还有gi ...
- Hibernate映射多对多双向关联关系(小案例)
多对多双向关联关系(Project(工程)/Emp(员工)为案例): 步骤如下: 1.创建Project类,并需要定义集合类型的Emp属性 public class Project { //编号 pr ...
- 全选,不选,反选 jquery
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 定位position
position : absolute | relative | fixed | static 定位:子集可以超出父级的范围,如父级蛇overflow:hidden则看不到. absolute : 绝 ...