我需要接受部分xxx.config自定义配置,并将其作为JSON直接序列化到我的页面中。
使用DataContractJsonSerializer产生
{"LockItem":false}
这类似于XmlSerializer的响应。我似乎无法找到一个覆盖,让我可以控制System.Configuration类的序列化过程。是否有任何好的技术,因为我应该创建一组DTO'ish模拟类并将数据组合到序列化中吗?
答案 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; }
}