使用 JavaScriptSerializer 创建自构造对象 (JSON.解析等效项)

本文关键字:JSON 创建 JavaScriptSerializer 对象 使用 | 更新日期: 2023-09-27 18:34:29

我正在创建一个灵活的框架,用于为第三方开发人员创建和存储设置。

我们做出的更好的选择之一是创建一个系统,开发人员在其中使用 JSON 创建自己的设置,并在以后简单地序列化对象。

public class YammerConfig
{
    public string yammerClientId { get; set; }
    public string yammerNetwork { get; set; }
    public YammerConfig(string js)
    {
        var ser = new JavaScriptSerializer();
        var sam = ser.Deserialize<YammerConfig>(js);
        yammerClientId = sam.yammerClientId;
        yammerNetwork = sam.yammerNetwork;
    }
}

这是在数据库中存储设置的有效方法,而无需为唯一的信息集重新配置新表。

我很想更进一步,就像JavaScript本身一样,并动态创建不需要手动序列化的对象。

是否可以在 .NET C# 中创建等效的json.parse

使用 JavaScriptSerializer 创建自构造对象 (JSON.解析等效项)

为什么不使用扩展方法

例如。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
namespace Stackoverflow.Helpers
{
    public static class JsonHelper
    {
        private static JavaScriptSerializer ser = new JavaScriptSerializer();
        public static T ToJSON<T>(this string js) where T : class
        {
            return ser.Deserialize<T>(js);
        }
        public static string JsonToString(this object obj)
        {
            return ser.Serialize(obj);
        }
    }
}

易于使用

//Deserialize
string s = "{yammerClientId = '"1'",yammerNetwork = '"2'"}";    
YammerConfig data = s.ToJSON<YammerConfig>();
//Serialize
string de = data.JsonToString();

你能使用 Newtonsoft.Json(home( 非常简单地进行反序列化吗? 它只是一行,比内置的更好。

var settings = JsonConvert.DeerializeObject<YammerSettings>(json);
var json     = JsonConvert.SerializeObject(yammerSettingsObject);
// you can also serialized and deserialize anon objects, control formatting, 
// do dictinaries and lists directly, datasets, and on and on

查看此网站以获取更多示例

如果这还没有涵盖您要查找的内容,您能更具体一点吗? 这是我们唯一使用的JSON库,它可以处理所有事情。