常用的一个简单方法

1 string jsonText = "{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}";
2 JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
3 string zone = jo["zone"].ToString();
4 string zone_en = jo["zone_en"].ToString();

通过JArray和JObject来创建一个音乐专辑结构的一个示例:

 1   //Newtonsoft.Json.Linq.JObject jsonObject = new Newtonsoft.Json.Linq.JObject {{"Entered", DateTime.Now}};
 2
 3             Newtonsoft.Json.Linq.JObject jsonObject = new Newtonsoft.Json.Linq.JObject();
 4
 5             jsonObject.Add("Entered", DateTime.Now);
 6
 7             dynamic album = jsonObject;
 8
 9             album.AlbumName = "Dirty Deeds Done Dirt Cheap";
10             album.Artist = "AC/DC/DVD";
11             album.YearReleased = DateTime.Now.Year;
12
13             album.Songs = new Newtonsoft.Json.Linq.JArray() as dynamic;
14
15             dynamic song = new Newtonsoft.Json.Linq.JObject();
16             song.SongName = "Dirty Deeds Done Dirt Cheap";
17             song.SongLength = "4:05";
18             album.Songs.Add(song);
19
20             song = new Newtonsoft.Json.Linq.JObject();
21             song.SongName = "Love at First Feel";
22             song.SongLength = "3:01";
23             album.Songs.Add(song);
24
25             song = new Newtonsoft.Json.Linq.JObject();
26             song.SongName = "小苹果";
27             song.SongLength = "03:32";
28             album.Songs.Add(song);
29
30             Console.WriteLine(album.ToString());
31
32             Console.ReadLine();

以上代码最重要的是没有明确指定类型,便可将动态对象进行JSON序列化,而JObject对象只是接收数据,具体结构通过动态语言在运行时生成,这意味着此代码可以在运行时被编译,从而体现动态语言的优势。序列化的结果如下图所示:

 1  //Newtonsoft.Json.Linq.JObject jsonObject = new Newtonsoft.Json.Linq.JObject {{"Entered", DateTime.Now}};
 2             Newtonsoft.Json.Linq.JObject jsonObject = new Newtonsoft.Json.Linq.JObject();
 3             jsonObject.Add("Entered", DateTime.Now);
 4             dynamic album = jsonObject;
 5
 6             album.AlbumName = "非主流歌曲";
 7
 8             foreach (var item in jsonObject)  //循环输出动态的值  JObject(基类为JContainer、JObject和JArray)是一个集合,实现了IEnumerable接口,因此你还可以轻松地在运行时循环访问
 9             {
10                 Console.WriteLine(item.Key + "的值为:" + item.Value.ToString());
11             }

JObject.Parse()和JArray.Parse()方法导入JSON格式,JToken结构支持Parse()和Load()方法,这两个方法可以分别从字符串或各种流读取JSON数据。JValue包括最核心的JSON 解析能力,支持将字符串转化为我们熟悉的动态对象。将JSON字符串转换为成JObject对象,并强制转换为动态类型。

 1  var jsonString = @"{""Name"":""小苹果"",""Company"":""韩国公司"",   ""Entered"":""2016-11-26 00:14""}";
 2
 3             dynamic json = Newtonsoft.Json.Linq.JToken.Parse(jsonString) as dynamic;
 4
 5             string name = json.Name;
 6             string company = json.Company;
 7             DateTime entered = json.Entered;
 8             Console.WriteLine("name:" + name);
 9             Console.WriteLine("company:" + company);
10             Console.WriteLine("entered:" + entered);
11
12             Console.ReadLine();

将JObject和JArray实例映射到一个强类型的对象,所以你可以在同一段代码中混合书写动态和静态类型

 1             string jsonString1 = @"[{""Name"":""小苹果"",""Age"":""20""},{""Name"":""演员"",""Age"":""2""}]";
 2             Newtonsoft.Json.Linq.JArray userAarray1 = Newtonsoft.Json.Linq.JArray.Parse(jsonString1) as Newtonsoft.Json.Linq.JArray;
 3             List<User> userListModel = userAarray1.ToObject<List<User>>();
 4             foreach (var userModel1 in userListModel)
 5             {
 6                 Console.WriteLine("Name:" + userModel1.Name);
 7                 Console.WriteLine("Age:" + userModel1.Age);
 8             }
 9
10             Console.WriteLine("");
11             string jsonString = @"[{""Name"":""小苹果"",""Age"":""20""}]";
12             Newtonsoft.Json.Linq.JArray userAarray = Newtonsoft.Json.Linq.JArray.Parse(jsonString) as Newtonsoft.Json.Linq.JArray;
13             Newtonsoft.Json.Linq.JObject jObject = userAarray[0] as Newtonsoft.Json.Linq.JObject;
14             User userModel = jObject.ToObject<User>();
15             Console.WriteLine("Name:" + userModel.Name);
16             Console.WriteLine("Age:" + userModel.Age);

1 public class User
2     {
3         public string Name { set; get; }
4         public int Age { set; get; }
5     }

JSON.NET对动态语言的支持,但也别忘了它对静态类型的强大支持,关于如何序列化和反序列化强类型对象,JsonConvert是一个高级别的静态类,包装更低级别的功能,但你也可以使用JsonSerializer类,该类可以序列化和反序列化各种流

 1  UserType album = new UserType()
 2             {
 3                 Type = "普通用户",
 4                 UserListModel = new List<User>()
 5                 {
 6                     new User()
 7                     {
 8                         Name="张三",
 9                         Age = 20
10                     },
11                     new User()
12                     {
13                         Name="李四",
14                         Age = 30
15                     }
16                 }
17             };
18
19             // serialize to string
20             string json2 = Newtonsoft.Json.JsonConvert.SerializeObject(album, Newtonsoft.Json.Formatting.Indented);
21             Console.WriteLine("序列化结果");
22             Console.WriteLine("");
23             Console.WriteLine(json2);
24
25             UserType userType = Newtonsoft.Json.JsonConvert.DeserializeObject<UserType>(json2);
26             Console.WriteLine("");
27             Console.WriteLine("反序列化:");
28             Console.WriteLine("Type:"+ userType.Type);
29             Console.WriteLine("");
30             foreach (var userModel in userType.UserListModel)
31             {
32                 Console.WriteLine("Name:"+userModel.Name);
33                 Console.WriteLine("Age:" + userModel.Age);
34             }

 1  public class UserType
 2     {
 3         public string Type { get; set; }
 4         public List<User> UserListModel { get; set; }
 5     }
 6
 7     public class User
 8     {
 9         public string Name { set; get; }
10         public int Age { set; get; }
11     }

转自    http://www.cnblogs.com/linJie1930906722/p/6103455.html

转载于:https://www.cnblogs.com/cwmizlp/p/9451103.html

C# Newtonsoft.Json 应用相关推荐

  1. Newtonsoft.Json文件错误

    今天,在一个项目中使用signalR,由于项目框架是.net 4.0,所以用signalR1.0版本,signalR使用需要newtonsoft.Json文件,它把原  newtonsoft.Json ...

  2. Newtonsoft.Json.dll 本地调用正常,服务器调用不正常

    Newtonsoft.Json.dll 本地调用正常,服务器调用不正常的问题 请将System.Runtime.Serialization.dll 传到服务器项目bin文件夹中即可 转载于:https ...

  3. Newtonsoft.Json code

    序列化 Product product = new Product(); product.ExpiryDate = new DateTime(2008, 12, 28);JsonSerializer ...

  4. 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json

    1..Net开源Json序列化工具Newtonsoft.Json中提供了解决序列化的循环引用问题: 方式1:指定Json序列化配置为 ReferenceLoopHandling.Ignore 方式2: ...

  5. Newtonsoft.Json 概述

    有时候,在前后台数据交互或者APP与后台交互的时候,我们通常会使用Json进行数据交互,为此会使用到Newtonsoft.Json.dll 这个类库,这个类库非微软官方,但是下载量已经超过了数十万次, ...

  6. Newtonsoft.Json高级用法

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  7. 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)...

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  8. Newtonsoft.Json的简单使用

    2019独角兽企业重金招聘Python工程师标准>>> 什么是Newtonsoft.Json Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库. Ne ...

  9. [C#][Newtonsoft.Json] Newtonsoft.Json 序列化时的一些其它用法

    Newtonsoft.Json 序列化时的一些其它用法 在进行序列化时我们一般会选择使用匿名类型 new { },或者添加一个新类(包含想输出的所有字段).但不可避免的会出现以下情形:如属性值隐藏(敏 ...

  10. Newtonsoft.Json(Json.net)的基本用法

    Newtonsoft.Json(Json.net)的基本用法 添加引用: 使用NuGet,命令:install-package Newtonsoft.Json 实体类: public class Bo ...

最新文章

  1. 回顾2009,展望2010。
  2. MySQL-入门安装
  3. android升级SDK后,XML graphical layout无法预览的解决
  4. android 骨骼动画库,cocos creator spine骨骼动画组件使用
  5. python来构建多层网络
  6. 《互联网运营智慧》随书视频
  7. 如何修改远程桌面连接端口 ,历史记录,支持多用户
  8. FireFox的插件范例,竟然有问题
  9. 【人脸识别】基于matlab GUI PCA算法人脸识别门禁系统【含Matlab源码 1777期】
  10. docker 查看镜像版本_Docker 安装及入门介绍 - 荏苒经十载
  11. IstioCon 2022 报名中|使用 eBPF 代替 iptable 加速 Istio 数据平面
  12. 携程开源的分布式apollo技术,不吃透都对不起自己
  13. 编译安装httpd服务
  14. windows11专业工作站版
  15. 船长就是法律!古代海盗残酷刑罚
  16. obs-studio 二次封装 (四)obs 音视频采集到推流大体流程图
  17. 告别笨重卡慢的PyCharm,使用Nodepad++ python编程
  18. 糟了,上网记录被 Python 扒下来了!
  19. python代码手机壁纸_爬虫 抓取王者荣耀所有英雄皮肤高清壁纸+超强注
  20. Unity官方实例教程 Roll-a-Ball(二)

热门文章

  1. System.Configuration.ConfigurationSettings.GetConfig(string)”已过时 问题的解决方法
  2. Java学习lesson 02
  3. chown -R命令的使用
  4. [CareerCup] 13.10 Allocate a 2D Array 分配一个二维数组
  5. 中小企业应如何选择合适的数据保护工具?
  6. NO11 java5的线程锁技术(Lock Condition)
  7. log4net使用详解 .
  8. ERP技术的新方向——智能客户端
  9. 【用户行为即时分析查询】 数据仓库实现 案例分享
  10. Android自定义控件之仿美团下拉刷新