将ConfigurationElement序列化为JSON的简单方法

时间:2010-04-19 18:27:27

标签: .net json serialization

我需要接受部分xxx.config自定义配置,并将其作为JSON直接序列化到我的页面中。

使用DataContractJsonSerializer产生

{"LockItem":false}

这类似于XmlSerializer的响应。我似乎无法找到一个覆盖,让我可以控制System.Configuration类的序列化过程。是否有任何好的技术,因为我应该创建一组DTO'ish模拟类并将数据组合到序列化中吗?

1 个答案:

答案 0 :(得分:0)

据我所知,您希望能够手动序列化对象,同时仍然可以从.NET到Json序列化类中受益。

在这种情况下,您可以使用JavaScriptSerializer类。您可以为此类注册转换器,在这种情况下,您可以完全控制要传递的对象的序列化。您覆盖的Serialize方法返回一个简单的IDictionary,然后将其直接序列化为json ..

以下是它的外观示例..

void Main()
{
    var js = new JavaScriptSerializer();
    js.RegisterConverters(new[] { new PonySerializer() });
    js.Serialize(new Bar { Foo = 5 }).Dump();
}

public class PonySerializer : JavaScriptConverter
{
    public override IEnumerable<Type> SupportedTypes
    {
        get { return new [] { typeof(Bar) }; }
    }

    public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
    {
        var result = new Dictionary<string, object>();
        if (obj is Bar)
        {
            var ob = obj as Bar;
            result["Foo"] = ob.Foo;
        }
        return result;
    }

    public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
    {
        throw new NotImplementedException();
    }
}

public class Bar
{
    public int Foo { get; set; }
}