这是相反的方式: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来代替。