JSON(JavaScript Object Notation)已经成为了现在大多数程序间数据交换的存储格式,在很多地方取代了XML文件的位置。JSON实际就是JavaScript的对象数组。

.NET操作JSON的方法,基本上可以分为两种:官方和第三方。官方直到.NET Framework 3.5才对JSON有支持,如果想在之前的.NET Framework版本中使用JSON的话,那就必须借助于第三方类库,如Newtonsoft(http://www.newtonsoft.com/json)。


.NET Framework 3.5提供的JSON操作方法

在项目中添加引用:System.ServiceModel.Web 和 System.Runtime.Serialization。

我们测试用到的类如下([]里面的属性是必须加的):

        [DataContract]
class Person
{
[DataMember]
public string Name { get; set; } [DataMember]
public int Age { get; set; }
}

测试代码:

        static void Main(string[] args)
{
Person p1 = new Person() { Name = "Richeir", Age = 25 };
using (MemoryStream stream1 = new MemoryStream())
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
ser.WriteObject(stream1, p1);
string convertResult = Encoding.UTF8.GetString(stream1.ToArray());
Console.WriteLine(convertResult);
} Console.ReadKey();
}

输出结果为:


Newtonsoft.Json提供的JSON操作方法

相比官方的转换方法,第三方提供的类库要简单很多。官方给的默认部署方式是直接打开VS的包管理器,PM > Install - Package Newtonsoft.Json就可以直接安装好。

测试类依旧,测试代码:

            string newtonSoftJson = JsonConvert.SerializeObject(p1);
Console.WriteLine(newtonSoftJson);

输出结果为:

可以看出,实际结果顺序可能不同,但是转换的效果是一样的。

Newtonsoft.Json只需要调用一个方法就能完成JSON的转换,比官方的方法要简洁不少。

.NET和JSON的更多相关文章

  1. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  2. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  3. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  4. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  5. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  6. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  7. JSON.parse()和JSON.stringify()

    1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf","age":"23&q ...

  8. json与JavaScript对象互换

    1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...

  9. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...

  10. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

随机推荐

  1. HTML5要点(二)

    <p> <b>今天周一</b>,<span>呵呵呵呵呵...</span> </p> <i>斜体文字</i&g ...

  2. 《Java并发编程实战》第十五章 原子变量与非堵塞同步机制 读书笔记

    一.锁的劣势 锁定后假设未释放.再次请求锁时会造成堵塞.多线程调度通常遇到堵塞会进行上下文切换,造成很多其它的开销. 在挂起与恢复线程等过程中存在着非常大的开销,而且通常存在着较长时间的中断. 锁可能 ...

  3. java String 两种不同的赋值 比较

    原文:http://blog.163.com/woshihezhonghua@126/blog/static/1271436362012101214031911/ 首先明确一点,String是一个类. ...

  4. iOS开发——面试笔试精华(一)

    面试笔试精华(一) 1.        #import 跟#include.@class有什么区别?#import<> 跟 #import”"又什么区别? 1>  #imp ...

  5. perl指针引用

    http://bbs.chinaunix.net/forum-viewthread-tid-570031.html

  6. Setting up a database adapter

    Setting up a database adapter zend-db provides a general purpose database abstraction layer. At its ...

  7. [转]在BBB启动时自动加载dtbo(或执行脚本、运行程序)

    启动时自动加载dtbo,实际上就是做了一个cape.官方推荐的方法是用eeprom来实现,请参考我的博文<为BBB制作专属自己的cape(一)>和<为BBB制作专属自己的cape(四 ...

  8. 大设计时代:针对超大网页布局的一些思考和建议 [Aseoe]

    对于有些设计项目来说,老套的设计模式并不奏效,你需要设计的大点,要比以往设计的元素还要大,因此就非常适合采用超大网页布局.无论是采用大块大块的背景照片还是背景视频,超大网页布局的效果非常显著:极具视觉 ...

  9. posix thread线程

    1. pthread线程通过调用你提供的某些函数开始.这个“线程函数”应该只有一个void*型参数,并返回系统的类型.2. 通过向pthread_create函数传递线程函数的地址和线程函数调用的参数 ...

  10. 关于ER图和UML图之间的对比

    ER图与UML图 ER图:实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象).属性和联系的方法,用来 ...