C# 中使用JSON - DataContractJsonSerializer
C#中使用JSON不需要使用第三方库,使用.NET Framwork3.5自带的System.Runtime.Serialization.Json即可很好的完成JSON的解析。
关于JSON的入门介绍见(首页的图很形象):
一、Using
需要添加引用:System.ServiceModel.Web 和 System.Runtime.Serialization,然后使用Using:
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
二、定义序列化的类
假如我们要转化的JSON字符串格式为:
{
"encoding":"UTF-8",
"plug-ins":["python","c++","ruby"],
"indent":
{
"length":,
"use_space":true
}
}
然后编写相应的序列化的类,注意下面类加的Attribute:
JSON Object[DataContract(Namespace ="http://coderzh.cnblogs.com")]
class Config
{
[DataMember(Order =)]
publicstring encoding { get; set; }
[DataMember(Order =)]
publicstring[] plugins { get; set; }
[DataMember(Order =)]
public Indent indent { get; set; }
} [DataContract(Namespace ="http://coderzh.cnblogs.com")]
class Indent
{
[DataMember(Order =)]
publicint length { get; set; }
[DataMember(Order =)]
publicbool use_space { get; set; }
}
三、对象转化为JSON字符串
使用WriteObject方法:
WriteObject var config =new Config(){
encoding ="UTF-8",
plugins =newstring[]{"python", "C++", "C#"},
indent =new Indent(){ length =, use_space =false}
}; var serializer =new DataContractJsonSerializer(typeof(Config));
var stream =new MemoryStream();
serializer.WriteObject(stream, config);
byte[] dataBytes =newbyte[stream.Length];
stream.Position =;
stream.Read(dataBytes, , (int)stream.Length);
string dataString = Encoding.UTF8.GetString(dataBytes);
Console.WriteLine("JSON string is:");
Console.WriteLine(dataString);
四、JSON字符串转对象
使用ReadObject方法:
var mStream =new MemoryStream(Encoding.Default.GetBytes(dataString)); Config readConfig = (Config)serializer.ReadObject(mStream); Console.WriteLine("Encoding is: {0}", readConfig.encoding); foreach (string plugin in readConfig.plugins)
{
Console.WriteLine("plugins is: {0}", plugin);
} Console.WriteLine("indent.length is: {0}", readConfig.indent.length); Console.WriteLine("indent.use_space is: {0}", readConfig.indent.use_space);
五、输出结果:
JSON stringis: {"encoding":"UTF-8","plugins":["python","C++","C#"],"indent":{"length":,"use_space":false}} Encoding is: UTF-
plugins is: python
plugins is: C++
plugins is: C#
indent.length is:
indent.use_space is: False
C# 中使用JSON - DataContractJsonSerializer的更多相关文章
- C#中的Json的序列化和反序列化
Json是一种通用的数据格式,我们在数据交换的时候,经常会用到,下面介绍c#中的json序列化和反序列化,当然也可用在asp.net,silverlight,wpf中.我们在下面实例讲解如何进行Jso ...
- 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...
- Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET W ...
- ASP.NET Web API中的JSON和XML序列化
ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...
- .net中使用JSON
在.NET使用JSON作为数据交换格式 ASP.NET中JSON的序列化和反序列化 三种方式: 使用System.Web.Script.Serialization.JavaScriptSerializ ...
- 详解电子表格中的json数据:序列化与反序列化
从XML到JSON 当下应用开发常见的B/S架构之下,我们会遇到很多需要进行前后端数据传输的场景.而在这个传输的过程中,数据通过何种格式传输.方式是否迅速便捷.书写方式是否简单易学,都成为了程序员在开 ...
- 如何正确的使用json?如何在.Net中使用json?
什么是json json是一种轻量级的数据交换格式,由N组键值对组成的字符串,完全独立于语言的文本格式. 为什么要使用json 在很久很久以前,调用第三方API时,我们通常是采用xml进行数据交互,但 ...
- SpringMVC中使用Json传数据
在web项目中使用Json进行数据的传输是非常常见且有用的,在这里介绍下在SpringMVC中使用Json传数据的一种方法,在我的使用中,主要包括下面四个部分(我个人喜好使用maven这类型工具进行项 ...
- PHP中生成json信息的方法
<?php //php中生成json信息 //json_encode(数组/对象) $color = array('red','blue','green'); //[索引数组] echo jso ...
随机推荐
- CSS样式表与格式布局
样式表 CSS(Cascading Style Sheets 层叠样式表),作用是美化HTML网页. 内联样式表: 例:<p style="font-size:10px;" ...
- Eclipse的常用快捷方式
在开发中,常用的一些快捷方式 alt+shift+r 修改方法名,变量名,关键体会enter ctrl+shift+c 先选中n行,注释 ...
- Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml(转)
注明:这个转的,见谅未能标明原始出处 我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述. 但是Activ ...
- C++ Double Ended Queues(双向队列)
双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样). Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 ...
- android网络编程
android的网络编程分为2种:基于socket的,和基于http协议的. 基于socket的用法 服务器端: 先启动一个服务器端的socket ServerSocket svr = new ...
- cookie文件在电脑的保存位置
在Windows系统上(这里以Win7为例)浏览器的Cookie IE浏览器Cookie数据位于:%APPDATA%\Microsoft\Windows\Cookies\ 目录中的xxx.txt文件 ...
- Crusher Django 学习笔记4 使用Model
http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial4-using-basic.html 顺便学习一下FQ Crush ...
- Delphi XE5教程12:注释和编译器指示字
内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误!也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者可 ...
- How to changes to Table & EDT Relations[AX2012]
Well I hope everyone is having a fine week so far. Oh Wednesdays, the furthermost point between two ...
- Keil uVision4 代码编辑器中文字符乱码问题
MDK-ARM 使用中一直有个很纠结的问题,中文字符支持不好. 比如写代码注释,使用中文删除字符就会只删除一半问题.复制粘贴代码中间有中文就会出现乱码问题. 想过换IAR,新学个IDE也麻烦,上面的问 ...