C# 对象与 JSON 字符串的相互转换

Posted 制作小程序网站电脑程序

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 对象与 JSON 字符串的相互转换相关的知识,希望对你有一定的参考价值。

程序使用 .NET Framework 提供的 javascriptSerializer 类进行序列化和反序列化操作,需要引用 .NET Framework 中的 System.Web.Extensions 程序集。对于直接进行 DataTable 类型对象的转换会出现 “序列化类型为“System.Reflection.RuntimeModule”的对象时检测到循环引用” 这一异常,所以程序中对 DataTable 类型的转换作了单独处理,当然只是从 DataTable 转换为 JSON 时作了处理,如果将 JSON 字符串转换为 DataTable 依然会失败,我想通常情况下的前后端交互只需要用到 DataTable 到 JSON 的转换就差不多了吧,下面是实现:

using System;
using System.Web.Script.Serialization;
using System.Data;
using System.Collections.Generic;

// 对象转换为 JSON 字符串
string ObjectToJSON(object _obj)
{
    try
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        if (_obj is DataTable)
        {
            DataTable dt = (DataTable)_obj;
            List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
            Dictionary<string, object> row;
            foreach (DataRow dr in dt.Rows)
            {
                row = new Dictionary<string, object>();
                foreach (DataColumn dc in dt.Columns)
                {
                    row.Add(dc.ColumnName, dr[dc]);
                }
                rows.Add(row);
            }
            return serializer.Serialize(rows);
        }
        return serializer.Serialize(_obj);
    }
    catch
    {
        return "{}";
    }
}

// JSON 字符串转换为相应类型的对象
T JSONToObject<T>(string _json)
{
    try
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        return serializer.Deserialize<T>(_json);
    }
    catch
    {
        return default(T);
    }
}

相关环境:
.NET Framework 4.0

以上是关于C# 对象与 JSON 字符串的相互转换的主要内容,如果未能解决你的问题,请参考以下文章

json字符串 与 json对象 的相互转换

微信小程序json对象与json字符串相互转换

json字符串与json对象的相互转换

js中 json对象与json字符串相互转换的几种方式

json对象与字符串的相互转换,数组和字符串的转换

JSON对象与字符串之间的相互转换