C#实现JSON和对象之间互相转换功能示例

发布时间 - 2026-01-11 03:04:10    点击率:

本文实例讲述了C#实现JSON和对象之间互相转换功能。分享给大家供大家参考,具体如下:

1.首先是声明用户信息对象,DataContract修饰类,表示可以被解析成JSON,DataMember修饰属性,Order表示 解析的顺序,另外Lover是数组列表,表示女朋友个数

Address 表示送货地址,DailyRecord  表示日常记录

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
namespace FunctionTest.Model
{
  [DataContract]
  public class UserInfo
  {
    [DataMember(Order =0)]
    public string UserName { get; set; }
    [DataMember(Order = 1)]
    public int Age { get; set; }
    [DataMember(Order = 2)]
    public int Gender { get; set; }
    [DataMember(Order =3)]
    public List<string> Lover { get; set; }
    [DataMember(Order = 4)]
    public ContactAddress Address { get; set; }
    [DataMember(Order = 5)]
    public Dictionary<string, string> DailyRecord {
      get; set;
    }
  }
  [DataContract]
  public class ContactAddress
  {
    [DataMember(Order =0)]
    public string Province { get; set; }
    [DataMember(Order = 1)]
    public string City { get; set; }
    [DataMember(Order = 2)]
    public string Country { get; set; }
    [DataMember(Order = 3)]
    public string Details { get; set; }
  }
}

2.JSON帮助类 核心代码

/// <summary>
/// Json转换成对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonText"></param>
/// <returns></returns>
public static T JsonToObject<T>(string jsonText)
{
  DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(T));
  MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
  T obj = (T)s.ReadObject(ms);
  ms.Dispose();
  return obj;
}
/// <summary>
/// 对象转换成JSON
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string ObjectToJSON<T>(T obj)
{
  DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
  string result = string.Empty;
  using (MemoryStream ms = new MemoryStream())
  {
    serializer.WriteObject(ms, obj);
    ms.Position = 0;
    using (StreamReader read = new StreamReader(ms))
    {
      result = read.ReadToEnd();
    }
  }
  return result;
}

3.调用

//1.对象-->JSON
UserInfo info = new UserInfo
{
    Age = 10,
    Gender = 1,
    UserName = "刘德华",
    Lover = new List<string> { "|美女|1", "|美女|2", "|美女|3" },
    Address = new ContactAddress
    {
      Province = "湖南省",
      City = "长沙市",
      Country = "望城县",
      Details = "某旮旯快递找不到的地方"
    },
    DailyRecord = new Dictionary<string, string> { { "星期一", "吃饭" }, { "星期二", "洗衣服" }, { "星期三", "好事情" } }
};
string json = ObjectToJSON<UserInfo>(info);

4.反序列化后的结果

复制代码 代码如下:{"UserName":"刘德华","Age":10,"Gender":1,"Lover":["|美女|1","|美女|2","|美女|3"],"Address":{"Province":"湖南省","City":"长沙市","Country":"望城县","Details":"某旮旯快递找不到的地方"},"DailyRecord":[{"Key":"星期一","Value":"吃饭"},{"Key":"星期二","Value":"洗衣服"},{"Key":"星期三","Value":"好事情"}]}

PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:

在线JSON代码检验、检验、美化、格式化工具:
http://tools./code/json

JSON在线格式化工具:
http://tools./code/jsonformat

在线XML/JSON互相转换工具:
http://tools./code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools./code/jsoncodeformat

在线json压缩/转义工具:
http://tools./code/json_yasuo_trans

更多关于C#相关内容还可查看本站专题:《C#字符串操作技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#程序设计之线程使用技巧总结》、《C#中XML文件操作技巧汇总》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。


# C#  # JSON  # 对象  # 转换  # C#编程实现对象与JSON串互相转换实例分析  # C#实现json格式转换成对象并更换key的方法  # C#中的DataSet、string、DataTable、对象转换成Json的实现代码  # C#中对象与JSON字符串互相转换的三种方式  # 望城县  # 长沙市  # 程序设计  # 湖南省  # 找不到  # 操作技巧  # 旮旯  # 转换成  # 洗衣服  # 转换工具  # 相关内容  # 数据结构  # 给大家  # 还可  # 更多关于  # 所述  # 几款  # 使用技巧  # 面向对象  # 再为 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用wdcp快速搭建高效网站?  JS实现鼠标移上去显示图片或微信二维码  音乐网站服务器如何优化API响应速度?  如何在云主机快速搭建网站站点?  什么是javascript作用域_全局和局部作用域有什么区别?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Laravel如何使用Blade组件和插槽?(Component代码示例)  jQuery 常见小例汇总  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  如何用5美元大硬盘VPS安全高效搭建个人网站?  使用豆包 AI 辅助进行简单网页 HTML 结构设计  公司网站制作价格怎么算,公司办个官网需要多少钱?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  网站制作壁纸教程视频,电脑壁纸网站?  如何快速搭建虚拟主机网站?新手必看指南  b2c电商网站制作流程,b2c水平综合的电商平台?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何续费美橙建站之星域名及服务?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何在IIS管理器中快速创建并配置网站?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Python进程池调度策略_任务分发说明【指导】  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel怎么上传文件_Laravel图片上传及存储配置  高防服务器租用如何选择配置与防御等级?  Python正则表达式进阶教程_复杂匹配与分组替换解析  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  js实现点击每个li节点,都弹出其文本值及修改  jQuery validate插件功能与用法详解  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在服务器上配置二级域名建站?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Python文件操作最佳实践_稳定性说明【指导】  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  晋江文学城电脑版官网 晋江文学城网页版直接进入  香港服务器建站指南:免备案优势与SEO优化技巧全解析  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Linux后台任务运行方法_nohup与&使用技巧【技巧】