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

相关文章
|
2月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
2月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
2月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
3月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
2月前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
189 3
|
2月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
289 3
|
3月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
3月前
|
JSON 自然语言处理 监控
淘宝关键词搜索与商品详情API接口(JSON数据返回)
通过商品ID(num_iid)获取商品全量信息,包括SKU规格、库存、促销活动、卖家信息、详情页HTML等。
|
3月前
|
JSON 自然语言处理 API
多语言实时数据淘宝商品评论API:技术实现与JSON数据解析指南
淘宝商品评论多语言实时采集需结合官方API与后处理技术实现。建议优先通过地域站点适配获取本地化评论,辅以机器翻译完成多语言转换。在合规前提下,企业可构建多语言评论数据库,支撑全球化市场分析与产品优化。
|
6月前
|
JSON 定位技术 PHP
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
238 67