C# 技巧(3) C# 操作 JSON
RestAPI中, 经常需要操作json字符串, 需要把json字符串"反序列化"成一个对象, 也需要把一个对象"序列化"成一字符串。
C# 操作json, 比较简单。 本文介绍几种方法
阅读目录
步骤
Json 字符串 反序列化成对象 共需要2步:
第一步:建立相应的实体类
第二步: 调用方法把Json字符串"反序列化"成对象
了解json的语法
首先要了解json的语法,这样才能知道怎么创建实体类.
Json 的语法很简单, 就四条
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
创建实体类的例子
{"FirstName":"小坦克","LastName":"Tank","Age":}
相应的实体类可以为
public class Person
{
public String FirstName
{ get; set; } public String LastName
{ get; set; } public int Age
{ get; set; }
}
自动生成JSON的实体类
一个复杂的实体类,我们自己去写的话,可能需要1个小时以上。 那有没有工具能直接生成实体类呢,这样能方便太多了。 当然有
http://jsonclassgenerator.codeplex.com/ ----开源的winform工具。

使用第三方工具 Newtonsoft.Json.dll
优点: 使用非常方便. 看个例子就知道怎么用了
下载地址 http://james.newtonking.com/json
代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json; namespace JsonDemo
{
class Program
{
static void Main(string[] args)
{
string personJson = "{ 'FirstName': '小坦克','LastName':'Tank xiao', 'Age':'30', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]}"; string allMoveJson = @"[{ 'FirstName': '小坦克','LastName':'Tank xiao', 'Age':'30', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]},{
'FirstName': '小坦克2','LastName':'Tank xiao2', 'Age':'40', 'Books':[{'BookName':'c#', 'Price':'29.9'},{'BookName':'Mac编程', 'Price':'39.9'}]}]"; // 反序列化 单个对象
Person oneMovie = JsonConvert.DeserializeObject<Person>(personJson); // 反序列化 对象集合
List<Person> allMovie = JsonConvert.DeserializeObject<List<Person>>(allMoveJson); Console.WriteLine(oneMovie.FirstName);
Console.WriteLine(allMovie[].FirstName); // 序列化
string afterJson = JsonConvert.SerializeObject(allMovie);
}
} public class Person
{
public String FirstName
{ get; set; } public String LastName
{ get; set; } public int Age
{ get; set; } public List<Book> Books
{ get; set; }
} public class Book
{
public string BookName
{ get; set; } public string Price
{ get; set; }
}
}
C# 技巧(3) C# 操作 JSON的更多相关文章
- C#操作JSON
http://www.cnblogs.com/LiZhiW/p/3624729.html C#操作JSON 1. .NET对JSON的支持介绍............................. ...
- C#操作Json(转)
原文:http://wenku.baidu.com/link?url=3dlqKdF26ZdQIAcX9jvP2ZYEtl3J0sKOV8XuHQI0Rz4SjB9S46nqmGiMXUVQa_1Pm ...
- 让C#可以像Javascript一样操作Json
Json的简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了 ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- JS操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- jsoncpp操作 json
jsoncpp操作 json 博客分类: c/c++ object-c 之 iphone #include <iostream> //#include "json/json. ...
- JSON和GSON操作json数据
1,JSON操作json import net.sf.json.JSONArray; import net.sf.json.JSONObject; //json操作数据 public static S ...
- js之操作JSON数据
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- (转)JSON数据格式和js操作json总结
原:http://niutuku.com/tech/javaScript/273643.shtml JSON数据格式和js操作json总结 来源:niutuku.com | vince ...
随机推荐
- easyui validatebox 验证类型
required: "必选字段", remote: "请修正该字段", email: "请输入正确格式的电子邮件" ...
- JCEF 如何修改右键菜单项(JCEF在右键菜单中添加开发者选项-show dev tools)
需求: 在界面的右键事件中添加一个打开开发者选项的菜单(Show Dev Tools) 所以我们可以看到的是在界面上右键,会有默认的一些菜单项(前进,后退,打印,查看源码),而这些功能并不一定是我们需 ...
- [DabaBase] MongoDB (6) 启动、停止、相关系统配置及安全性设置
MongoDB 启动.停止.相关系统配置及安全性设置 启动MongoDB ./mongod —-help 查看帮助说明 mac-abeen:bin abeen$ sudo ./mongod --dbp ...
- Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) A
Description Santa Claus is the first who came to the Christmas Olympiad, and he is going to be the f ...
- mysql查询一个小知识点,查询结果是空与查询出错是不一样的
$conn = new mysqli(....); $sql = ""; $query = $conn->query($sql); 这里,如果查询正常,有数据返回,那么$qu ...
- Python -- 数据加载、存储与文件格式
标签(空格分隔): Python 读入读出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式,加载数据库中的数据,利用Web API操作网络资源. 读写文本格式的数据 pandas提供了一 ...
- JS高级程序设计 笔记
1.instanceof 可以判断实例是否在某个对象的原型上: function A() { this.a = "a"; } function B() { this.b = &qu ...
- Object-C
#import <Foundation/Foundation.h> #pragma mark 狗类的声明 @interface Dog:NSObject { @public NSStrin ...
- BW知识问答锦集2
PM面试分为BW.BO两部分,根据顾问的简历和应聘的岗位所侧重的问题不同. BW包括基础知识.增量.增强.LO抽取.数据源. BO包括 CR.CR.WEBI.UNI. 一. 基础知识 技术面试 1. ...
- Cocos2d-x 核心概念 - 层(Layer)
层(Layer) 一个简单的主界面是由是三个层叠加实现的,从上到下依次为,菜单层,精灵层,背景层 这个次序适用与事件的响应机制,菜单层最先接受到系统事件,然后精灵层,最后背景层 在事件传递的过程中,如 ...