改文章转自:https://www.cnblogs.com/shang201215019/p/7907655.html

什么是 Json ?

       Json【javascript对象表示方法】,

       它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它,

       并且它很容易被计算机转化和生成,它是完全独立于语言的。

Json支持下面两种数据结构:

  • 键值对的集合--各种不同的编程语言,都支持这种数据结构;
  • 有序的列表类型值的集合--这其中包含数组,集合,矢量,或者序列,等等。

Json有下面几种表现形式:

     1.对象

           一个没有顺序的“键/值”,一个对象以花括号“{”开始,并以花括号"}"结束,

在每一个“键”的后面,有一个冒号,并且使用逗号来分隔多个键值对。

例如:var user = {"name":"Manas","gender":"Male","birthday":"1987-8-8"}

     2.数组

           设置值的顺序,一个数组以中括号"["开始,并以中括号"]"结束,

并且所有的值使用逗号分隔,

例如:

var userlist = [

{"user":{"name":"Manas","gender":"Male","birthday":"1987-8-8"}}, 
                                           {"user":{"name":"Mohapatra","Male":"Female","birthday":"1987-7-7"}}

]

     3.字符串

            任意数量的Unicode字符,使用引号做标记,并使用反斜杠来分隔。

(注意: 引号  逗号  冒号  均为英文状态下半角符号, 且只能是双引号 )

例如: var userlist = "{\"ID\":1,\"Name\":\"Manas\",\"Address\":\"India\"}"

C#中具体如何使用:           

           在C#中我们经常使用下面的工具来解析Json格式的内容

            Newtonsoft.Json,是.Net中开源的Json序列化和反序列化工具,官方地址:http://www.newtonsoft.com/json

具体使用:

1. 右键项目=>Nuget包管理=>添加  Newtonsoft.Json

2. 引入命名空间

1 using Newtonsoft.Json;

3. 定义类

     public class Student
{
public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } public string Sex { get; set; }
}

4. 序列化和反序列化实体对象

//序列化对象
Student one = new Student()
{ ID = 1, Name = "武松", Age = 250, Sex = "男" }; //序列化
string jsonData = JsonConvert.SerializeObject(one); Console.WriteLine(jsonData); //显示结果
Console.ReadLine(); //反序列化对象
string str = "{\"ID\":2,\"Name\":\"鲁智深\",\"Age\":230,\"Sex\":\"男\"}";

//反序列化
Student two = JsonConvert.DeserializeObject<Student>(str); Console.WriteLine(
string.Format("学生信息 ID:{0},姓名:{1},年龄:{2},性别:{3}",
two.ID,two.Name, two.Age,two.Sex));//显示结果
Console.ReadLine();

输出结果:

5. 序列化实体对象集合

   //序列化对象集合
List<Student> oneList = new List<Student>() {
new Student{ ID = 1, Name = "武大", Age = 260, Sex = "男" },
new Student{ ID = 2, Name = "武二", Age = 250, Sex = "男" },
new Student{ ID = 3, Name = "武三", Age = 240, Sex = "女" }
}; //定义对象 string jsonData = JsonConvert.SerializeObject(oneList); //序列化 Console.WriteLine(jsonData); //显示结果
Console.ReadLine();

显示结果:

6. 反序列化实体对象集合(这里直接使用了 5 中的jsonData 字符串  , 原谅我偷点懒 )

   List<Student> twoList = JsonConvert.DeserializeObject<List<Student>>(jsonData);

   foreach(Student stu in twoList)
{
Console.WriteLine(
string.Format("学生信息 ID:{0},姓名:{1},年龄:{2},性别:{3}",
stu.ID, stu.Name, stu.Age, stu.Sex));//显示结果
}
Console.ReadLine();

显示结果:

C#中json字符串的序列化和反序列化的更多相关文章

  1. .net core Json字符串的序列化和反序列化通用类源码,并模拟了10万数据对比DataContractJsonSerializer和Newtonsoft性能

    我们在开发中Json传输数据日益普遍,有很多关于Json字符串的序列化和反序列化的文章大多都告诉你怎么用,但是却不会告诉你用什么更高效.因为有太多选择,人们往往会陷入选择难题. 相比.NET Fram ...

  2. C#将JSON字符串对象序列化与反序列化

    C#将对象序列化成JSON字符串 public string GetJsonString() { List<Product> products = new List<Product& ...

  3. c# .net 读取json 字符串 与序列化和反序列化json字符串

    命名空间 using Newtonsoft.Json.Linq; JObject obj = JObject.Parse("json字符串");用 obj["" ...

  4. com.google.gson json字符串的序列化与反序列化

    经常做协议的时候用到json,个人习惯是定义协议文档,很少在这中场景中定义类,使用对象. 这里使用一个人物有名字,性别,有一个物品列表做个简单示例记录. 序列化 JsonObject jo=new J ...

  5. .net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值

    在.net mvc的controller中,方法返回JsonResult,一般我们这么写: [HttpPost] public JsonResult QueryFeature(string url, ...

  6. 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性

    "/"应用程序中的服务器错误.使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. ...

  7. 【转】在C#中使用Json.Net进行序列化和反序列化及定制化

    作者:Minotauros 原文地址:在C#中使用Json.Net进行序列化和反序列化及定制化 序列化(Serialize)是将对象转换成字节流,并将其用于存储或传输的过程,主要用途是保存对象的状态, ...

  8. JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值

    在.net mvc的controller中,方法返回JsonResult,一般我们这么写:   [HttpPost]   public JsonResult QueryFeature(string u ...

  9. 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错

    如题 报错提示: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值.","Sta ...

随机推荐

  1. 170801、VM性能调优

    最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录. 一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老 ...

  2. 170720、springboot编程之properties文件讲解

    但是在实际开发过程中有更复杂的需求,我们在对properties进一步的升华.在本篇博客中您将会学到如下知识(这节中有对之前的知识的温故,对之前的升华): (1) 在application.prope ...

  3. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path(Myeclipse添加Server Library)

    网上找练习的项目导入到myeclipse项目发现每个JSP 出现错误The superclass "javax.servlet.http.HttpServlet" was not ...

  4. Python 面向对象 类 __str__

    class dog(object): def __init__(self,name): self.name = name d = dog('mike') print(d) # <__main__ ...

  5. 前端错误提示whitelabel error page

    1:错误提示whitelabel error page:需要定义一个error.html  ,否则提示如图

  6. Sparsity稀疏编码(二)

           为了更进一步的清晰理解大脑皮层对信号编码的工作机制(策略),需要把他们转成数学语言,因为数学语言作为一种严谨的语言,可以利用它推导出期望和要寻找的程式.本节就使用概率推理(bayes v ...

  7. Django小项目简单BBS论坛

    开发一个简单的BBS论坛 项目需求: 1 整体参考"抽屉新热榜" + "虎嗅网" 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用 ...

  8. Redis 监控方案

    一.概述 近些天,遇到Redis监控的应用场景,从网上搜罗了一些文章,做了整理. 二.工具列表 2.1 redis-faina 见参考文章1 2.2 redis-live 见参考文章1 2.3 red ...

  9. C#反射——模仿ParameterInterceptor(ashx处理程序)

    反射工具类请参见:https://www.cnblogs.com/threadj/p/10535796.html using System; using System.Collections.Gene ...

  10. centos6.5/6.6配置java环境以及数据库

    配置java环境 一.解压jdk 二.配置环境变量 1.修改修改/etc/profile文件(推荐开发环境使用,因为所有用户shell都有权使用这些环境变量,可能带来环境问题) 在profile末尾加 ...