【winform 学习】C# 转换成JSON对象
C#里面对json的处理有2种,JavaScriptSerializer和DataContractJsonSerializer。
JavaScriptSerializer读出来就是key-value pair这种Dictionary<string, object>的东西,这个比较通用。
DataContractJsonSerializer类似于其他的Serializer,比如XMLSerializer一类的,是对象序列化/反序列化用的
第一种示例代码:
(测试发现using System.Web.Script.Serialization不能在Winform 中引用,所以JavaScriptSerializer 不用在winform中使用
那winform 下怎么解析JSON 可以参考:http://q.cnblogs.com/q/46365/ 1.Json.NET 2. 引用官方的System.Web.Extensions.dll
dll文件:可以网上下载,或者参考下面地址的方面:http://wenku.it168.com/d_000825166.shtml):
string
jsonStr =
@"{""fruits"":{""a"":""orange"",""b"":""banana"",""c"":""apple""},""name"":{""z"":""zhangsan"",""l"":""lisi""}}"
;
JavaScriptSerializer serializer =
new
JavaScriptSerializer();
Dictionary<
string
,
object
> json = serializer.DeserializeObject(jsonStr)
as
Dictionary<
string
,
object
>;
Dictionary<
string
,
object
> obj = json[
"fruits"
]
as
Dictionary<
string
,
object
>;
Console.WriteLine(obj[
"a"
]);
Console.ReadLine();
第二种:DataContractJsonSerializer很不错,(不过,要申明DataContract数据数据契约,如果参数的名字不是固定的话,用第一种更好)
[DataContract]
public
class
DanTengObj
{
[DataMember(Order = 1, Name =
"fruits"
)]
public
Fruits fruits {
get
;
set
; }
[DataMember(Order = 2, Name =
"name"
)]
public
Name name {
get
;
set
; }
[DataContract]
public
class
Fruits
{
[DataMember(Order = 1, Name =
"a"
)]
public
string
a {
get
;
set
; }
[DataMember(Order = 2, Name =
"b"
)]
public
string
b {
get
;
set
; }
[DataMember(Order = 3, Name =
"c"
)]
public
string
c {
get
;
set
; }
}
[DataContract]
public
class
Name
{
[DataMember(Order = 1, Name =
"z"
)]
public
string
z {
get
;
set
; }
[DataMember(Order = 1, Name =
"l"
)]
public
string
l {
get
;
set
; }
}
}
static
void
DanTengJsonTest()
{
string
jsonStr =
@"{""fruits"":{""a"":""orange"",""b"":""banana"",""c"":""apple""},""name"":{""z"":""zhangsan"",""l"":""lisi""}}"
;
DataContractJsonSerializer js =
new
DataContractJsonSerializer(
typeof
(DanTengObj));
using
(MemoryStream ms =
new
MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
{
DanTengObj obj = js.ReadObject(ms)
as
DanTengObj;
Console.WriteLine(obj.fruits.a);
}
}
参考地址:http://bbs.csdn.net/topics/390545176
【winform 学习】C# 转换成JSON对象的更多相关文章
- Java对象转换成xml对象和Java对象转换成JSON对象
1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值
一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...
- List转换成JSON对象
List转换成JSON对象 1.准备工作 导入jar包 (1)json-lib-2.3-jdk15.jar (2)commons-beanutils-1.8.0.jar (3)commons-coll ...
- List转换成JSON对象报错(五)
List转换成JSON对象 1.具体错误如下 Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
- List转换成JSON对象报错(四)
List转换成JSON对象 1.具体错误如下 Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
- List转换成JSON对象报错(三)
List转换成JSON对象 1.具体错误如下 Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/e ...
- List转换成JSON对象报错(二)
List转换成JSON对象 1.具体报错如下 Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
- List转换成JSON对象报错(一)
List转换成JSON对象 1.具体报错如下 Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
- 特殊字符导致json字符串转换成json对象出错
在对数据库取出来的数据(特别是描述信息)里面含有特殊字符的话,使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问 ...
- 转换成json字符串,与json字符串转换成java类型都要先转换成json对象
转换成json字符串,与json字符串转换成java类型都要先转换成json对象
随机推荐
- c#邮箱发送和接收
简洁版发送: //web.config ---文件 <?xml version="1.0" encoding="utf-8"?> <!-- 有 ...
- 为PetaPoco添加实体模板
Brad为我们提供了T4模板,因为公司一直在使用CodeSmith,故为其写了一个CodeSmith的模板,代码如下: <%-- Name:EntityTemplates Author: Des ...
- easyui datagrid tooltip
$('#dg').datagrid('getPanel').find('.easyui-tooltip').each(function(){ var index = parseInt($(this). ...
- [问题2014S09] 复旦高等代数II(13级)每周一题(第九教学周)
[问题2014S09] 证明: \(n\) 阶方阵 \(A\) 与所有的 \(A^m\,(m\geq 1)\) 都相似的充分必要条件是 \(A\) 的 Jordan 标准型为 \[\mathrm{d ...
- jquery.validate使用 - 2
jQuery.validate.js API说明 参考http://ideabean.javaeye.comPlugin methods Name Type validate( options ) R ...
- (淘宝无限适配)手机端rem布局详解(转载非原创)
从网易与淘宝的font-size思考前端设计稿与工作流 本文结合自己对网易与淘宝移动端首页html元素上的font-size这个属性的思考与学习,讨论html5设计稿尺寸以及前端与设计之间协作流程的问 ...
- ElasticSearch学习问题记录——Invalid shift value in prefixCoded bytes (is encoded value really an INT?)
最近在做一个电商项目,其中商品搜索中出现一个奇怪的现象,根据某个字段排序的时候会出现商品数量减少的情况.按照一般路要么查不出来,要么正常显示,为什么增加了按照销量排序就会出现查询结果减少的情况. 查了 ...
- dll文件是什么
dll实际上是动态链接库的缩写,从windows1.0开始,动态链接库就是整个操作系统的基础,那么这有什么作用呢?在dos时代,程序员是通过编写程序来达到预期的目的的,每实现一个目的就需要编写一个程序 ...
- (function($){}) 和$(function(){}) 和$(function($){}) 区别
请问下(function($){}) 和$(function(){}) 和$(function($){}) 有什么区别 谢谢 一.先看 jQuery(function(){ }); 全写为 jQuer ...
- linux笔记:用户和用户组管理-用户管理命令
useradd(添加用户.在使用useradd添加一个用户后,必须使用passwd给该用户设置密码,该用户才能登陆): passwd(设置或修改用户密码): usermod(修改用户信息): chag ...