JSON数据的两种读写方法

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 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

相关文章
|
11天前
|
JSON 前端开发 JavaScript
|
1天前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
4天前
|
存储 JSON JavaScript
|
6天前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
2天前
|
JSON Java API
Jackson:SpringBoot中的JSON王者,优雅掌控数据之道
【8月更文挑战第29天】在Java的广阔生态中,SpringBoot以其“约定优于配置”的理念,极大地简化了企业级应用的开发流程。而在SpringBoot处理HTTP请求与响应的过程中,JSON数据的序列化和反序列化是不可或缺的一环。在众多JSON处理库中,Jackson凭借其高效、灵活和强大的特性,成为了SpringBoot中处理JSON数据的首选。今天,就让我们一起深入探讨Jackson如何在SpringBoot中优雅地控制JSON数据。
10 0
|
3天前
|
JSON 数据处理 数据格式
Python中JSON结构数据的高效增删改操作
Python中JSON结构数据的高效增删改操作
|
3天前
|
XML JSON 定位技术
在Python中操纵json数据的最佳方式
在Python中操纵json数据的最佳方式
|
4天前
|
JSON API 数据格式
基于服务器响应的实时天气数据进行JSON解析的详细代码及其框架
【8月更文挑战第25天】这段资料介绍了一个使用Python从服务器获取实时天气数据并解析JSON格式数据的基本框架。主要分为三个部分:一是安装必要的`requests`库以发起HTTP请求获取数据,同时利用Python内置的`json`库处理JSON数据;二是提供了具体的代码实现,包括获取天气数据的`get_weather_data`函数和解析数据的`parse_weather_data`函数;三是对代码逻辑进行了详细说明,包括如何通过API获取数据以及如何解析这些数据来获取温度和天气描述等信息。用户需要根据实际使用的天气API调整代码中的API地址、参数和字段名称。
|
6天前
|
JSON 开发工具 数据格式
【Azure Event Hub】Event Hub的Process Data页面无法通过JSON格式预览数据
【Azure Event Hub】Event Hub的Process Data页面无法通过JSON格式预览数据
|
10天前
|
SQL JSON 关系型数据库
"SQL老司机大揭秘:如何在数据库中玩转数组、映射与JSON,解锁数据处理的无限可能,一场数据与技术的激情碰撞!"
【8月更文挑战第21天】SQL作为数据库语言,其能力不断进化,尤其是在处理复杂数据类型如数组、映射及JSON方面。例如,PostgreSQL自8.2版起支持数组类型,并提供`unnest()`和`array_agg()`等函数用于数组的操作。对于映射类型,虽然SQL标准未直接支持,但通过JSON数据类型间接实现了键值对的存储与查询。如在PostgreSQL中创建含JSONB类型的表,并使用`->>`提取特定字段或`@>`进行复杂条件筛选。掌握这些技巧对于高效管理现代数据至关重要,并预示着SQL在未来数据处理领域将持续扮演核心角色。
21 0

热门文章

最新文章

下一篇
云函数