JSON数据的两种读写方法-阿里云开发者社区

开发者社区> 长空翱翔> 正文

JSON数据的两种读写方法

简介: 1、利用.NET自身的JavaScriptSerializer 需要添加System.Web.Extensions.dll 添加方法见: http://blog.
+关注继续查看

1、利用.NET自身的JavaScriptSerializer

需要添加System.Web.Extensions.dll

添加方法见:

http://blog.chinaunix.net/uid-25498312-id-5675200.html


点击(此处)折叠或打开

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Web.Script.Serialization;
  6. namespace TestJSON
  7. {
  8.     class CustomData
  9.     {
  10.         public string Input;
  11.         public string Output;
  12.     }
  13.     class Program
  14.     {
  15.         static void Main(string[] args)
  16.         {
  17.             Console.WriteLine("----------------------- Using .Net JavaScriptSerializer api for JSON ------------------------\n");
  18.             CustomData p = new CustomData() { Input = "stone", Output = "gold" };
  19.             JavaScriptSerializer serializer = new JavaScriptSerializer();
  20.             var json = serializer.Serialize(p);
  21.             Console.WriteLine(json);
  22.             var p1 = serializer.Deserialize(json);
  23.             Console.WriteLine(p1.Input + "=>" + p1.Output);
  24.             // 确定指定的 System.Object 实例是否是相同的实例
  25.             Console.WriteLine(ReferenceEquals(p, p1));
  26.             Console.ReadLine();
  27.         }
  28.     }
  29. }

image

上述结果同时证明了从p到p1是深拷贝。


2、利用Newtonsoft.Json.dll开源库

点击(此处)折叠或打开

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Web.Script.Serialization;
  6. namespace TestJSON
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Console.WriteLine("----------------------- Using NewtonSoftJson api for JSON ------------------------\n");
  13.             //匿名对象解析,uid=0即为整型,若uid="0"则为字符串 
  14.             var tempEntity = new { uid = 0, rid = 0, cmd = 0, commander = 0, target = 0 };
  15.             // 序列化的后发送
  16.             string jsonStr = JsonHelper.SerializeObject(tempEntity);
  17.             // 收到后解析
  18.             tempEntity = JsonHelper.DeserializeAnonymousType("{\"uid\":123,\"rid\":466,\"cmd\":4099,\"commander\":123,\"target\":666}", tempEntity);
  19.             Console.WriteLine(tempEntity.uid);
  20.             Console.ReadLine();
  21.         }
  22.     }
  23. }


  1. /* JasonHelper.cs文件: */
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.IO;
  7. using Newtonsoft.Json;

  8. namespace TestJSON
  9. {
  10.     ///
  11.     /// Json帮助类
  12.     ///
  13.     public class JsonHelper
  14.     {
  15.         ///
  16.         /// 将对象序列化为JSON格式
  17.         ///
  18.         /// 对象
  19.         /// json字符串
  20.         public static string SerializeObject(object o)
  21.         {
  22.             string json = JsonConvert.SerializeObject(o);
  23.             return json;
  24.         }

  25.         ///
  26.         /// 解析JSON字符串生成对象实体
  27.         ///
  28.         /// 对象类型
  29.         /// json字符串(eg.{"ID":"112","Name":"石子儿"})
  30.         /// 对象实体
  31.         public static T DeserializeJsonToObject(string json) where T : class
  32.         {
  33.             JsonSerializer serializer = new JsonSerializer();
  34.             StringReader sr = new StringReader(json);
  35.             object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));
  36.             T t = o as T;
  37.             return t;
  38.         }


  39.         ///
  40.         /// 解析JSON数组生成对象实体集合
  41.         ///
  42.         /// 对象类型
  43.         /// json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])
  44.         /// 对象实体集合
  45.         public static List DeserializeJsonToList(string json) where T : class
  46.         {
  47.             JsonSerializer serializer = new JsonSerializer();
  48.             StringReader sr = new StringReader(json);
  49.             object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List));
  50.             List list = o as List;
  51.             return list;
  52.         }

  53.         ///
  54.         /// 反序列化JSON到给定的匿名对象.
  55.         ///
  56.         /// 匿名对象类型
  57.         /// json字符串
  58.         /// 匿名对象
  59.         /// 匿名对象
  60.         public static T DeserializeAnonymousType(string json, T anonymousTypeObject)
  61.         {
  62.             T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);
  63.             return t;
  64.         }
  65.     }
  66. }


image


工程源码:
img_e25d4fb2f8de1caf41a735ec53088516.pngTestJSON.rar
Newtonsoft.Json.dll库:
img_e25d4fb2f8de1caf41a735ec53088516.pngNewtonsoft.rar

参考文献:

http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-json.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Python3.5】读写JSON格式的数据
打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.
995 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2503 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
9501 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
8919 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11017 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
2949 0
+关注
长空翱翔
长期从事Windows和linux应用程序开发,系统开发,驱动程序开发以及基于.net平台的软件开发;擅长面向对象程序设计、数据库设计、应用与开发;
938
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载