C#通用Json格式序列化和反序列化的方法

简介: 引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化序列化类:People public class People { public int Id {...

引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化

序列化类:People

 
public class People
{
public int Id { get ; set ; }
public string Name { get ; set ; }
}
执行序列化反序列化
 
protected void Page_Load( object sender, EventArgs e)
{
People people
= new People();
people.Id
= 1 ;
people.Name
= " 小白 " ;


DataContractJsonSerializer json
= new DataContractJsonSerializer(people.GetType());
string szJson = "" ;
// 序列化
using (MemoryStream stream = new MemoryStream())
{
json.WriteObject(stream, people);
szJson
= Encoding.UTF8.GetString(stream.ToArray());
}
// 反序列化
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
{
DataContractJsonSerializer serializer
= new DataContractJsonSerializer( typeof (People));
People _people
= (People)serializer.ReadObject(ms);
}
}

szJson输出结果:{"Id":1,"Name":"小白"}


可以使用IgnoreDataMember:指定该成员不是数据协定的一部分且没有进行序列化,DataMember:定义序列化属性参数,使用DataMember属性标记字段必须使用DataContract标记类
否则DataMember标记不起作用。

 
[DataContract]
public class People
{
[DataMember(Name
= " id " )]
public int Id { get ; set ; }
[IgnoreDataMember]
public string Name { get ; set ; }
}

输出结果: {"id":1}

 

 

 

进行简单封装一下

 

using System.Text;
using System.Runtime.Serialization.Json;
using System.IO;

namespace RRQ.Common
{
     public  static  class JsonExtension
    {
         ///   <summary>
        
///  序列化Json
        
///   </summary>
        
///   <typeparam name="T"></typeparam>
        
///   <param name="target"></param>
        
///   <returns></returns>
         public  static  string JsonSerialize<T>( this  object target)
        {
            T result = (T)target;

            DataContractJsonSerializer json =  new DataContractJsonSerializer(result.GetType());

             using (MemoryStream stream =  new MemoryStream())
            {
                json.WriteObject(stream, result);
                 return Encoding.UTF8.GetString(stream.ToArray());
            }
        }

         ///   <summary>
        
///  返序列化Json
        
///   </summary>
        
///   <typeparam name="T"></typeparam>
        
///   <param name="target"></param>
        
///   <returns></returns>
         public  static T JsonDeserialize<T>( this  string target)
        {
             using (MemoryStream ms =  new MemoryStream(Encoding.UTF8.GetBytes(target)))
            {
                DataContractJsonSerializer serializer =  new DataContractJsonSerializer( typeof(T));
                 return (T)serializer.ReadObject(ms);
            }
        }
    }
}

 

 

目录
相关文章
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
234 1
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
248 1
|
7月前
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
311 3
|
8月前
|
JSON JavaScript 前端开发
Go语言JSON 序列化与反序列化 -《Go语言实战指南》
本文介绍了 Go 语言中使用 `encoding/json` 包实现 JSON 与数据结构之间的转换。内容涵盖序列化(`Marshal`)和反序列化(`Unmarshal`),包括基本示例、结构体字段标签的使用、控制字段行为的标签(如 `omitempty` 和 `-`)、处理 `map` 和切片、嵌套结构体序列化、反序列化未知结构(使用 `map[string]interface{}`)以及 JSON 数组的解析。最后通过表格总结了序列化与反序列化的方法及类型要求,帮助开发者快速掌握 JSON 数据处理技巧。
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
JSON 人工智能 算法
探索大型语言模型LLM推理全阶段的JSON格式输出限制方法
本篇文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
1849 48
|
JSON JavaScript Java
对比JSON和Hessian2的序列化格式
通过以上对比分析,希望能够帮助开发者在不同场景下选择最适合的序列化格式,提高系统的整体性能和可维护性。
477 3
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
XML JSON Kubernetes
什么是 YAML?:一种简洁高效的数据序列化格式
什么是 YAML?:一种简洁高效的数据序列化格式
2151 0
|
4月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
265 19