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);
            }
        }
    }
}

 

 

目录
相关文章
|
1月前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
91 1
|
25天前
|
JSON JavaScript Java
对比JSON和Hessian2的序列化格式
通过以上对比分析,希望能够帮助开发者在不同场景下选择最适合的序列化格式,提高系统的整体性能和可维护性。
33 3
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
JSON JavaScript 前端开发
|
1月前
|
JSON 人工智能 算法
探索LLM推理全阶段的JSON格式输出限制方法
文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
|
28天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
7月前
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
128 1
|
4月前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
106 1
|
XML JSON 前端开发
ajax请求json和xml数据及对json和xml格式数据的解析
ajax请求json和xml数据及对json和xml格式数据的解析
181 0
|
XML 存储 JSON
JSON&Ajax(语法格式+解析json)
导读模块:发展史: 21世纪初,Douglas Crockford寻找一种简便的数据交换格式, 能够在服务器之间交换数据。当时通用的数据交换语言是XML, 但是Douglas Crockford觉得XML的生成和解析都太麻烦, 所以他提出了一种简化格式,也就是Json。
122 0