这是相反的方式:Json.Encode(Model)
做的比普通的更多JavaScriptSerializer
:
在内部,Json.Encode
也使用了,System.Web.Script.Serialization.JavaScriptSerializer
但它注册了一个额外的转换器,称为DynamicJavaScriptConverter
.
哪里DynamicJavaScriptConverter
是
知道如何从动态对象中获取成员值的转换器。
您可以Json.Encode
在线查看来源:
public static class Json
{
private static readonly JavaScriptSerializer _serializer = CreateSerializer();
public static string Encode(object value)
{
// Serialize our dynamic array type as an array
DynamicJsonArray jsonArray = value as DynamicJsonArray;
if (jsonArray != null)
{
return _serializer.Serialize((object[])jsonArray);
}
return _serializer.Serialize(value);
}
private static JavaScriptSerializer CreateSerializer()
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJavaScriptConverter() });
return serializer;
}
//...
}
因此,使用Json.Encode
你可以获得一些额外的支持来处理dynamic
对象,但如果你不需要它,你可以使用“vanilia”JavaScriptSerializer
来代替。