[英]Newtonsoft.JSON serialization results in a sole string with the object's type
我有一个ProcessStartInfo
类的对象
ProcessStartInfo psi = new ProcessStartInfo()
{
FileName = "path",
Arguments = "args",
UseShellExecute = false,
RedirectStandardError = true,
CreateNoWindow = true,
Verb = "runas"
};
为了记录目的,我想将它序列化为JSON。 我的代码:
string json = JsonConvert.SerializeObject(psi);
json
包含:
“System.Diagnostics.ProcessStartInfo”
如何序列化属性intead类型名称?
由于@CodeCaster在注释中指定,问题在于[TypeConverter(typeof(ExpandableObjectConverter))]
,您需要为分配给类型的' ExpandableObjectConverter
'属性创建新的JsonObjectContract
。
可以为具有“ExpandableObjectConverter”属性的类型创建新的合约解析程序:
public class SerializableExpandableContractResolver : DefaultContractResolver
{
protected override JsonContract CreateContract(Type objectType)
{
if (TypeDescriptor.GetAttributes(objectType).Contains(new TypeConverterAttribute(typeof(ExpandableObjectConverter))))
{
return CreateObjectContract(objectType);
}
return base.CreateContract(objectType);
}
}
现在,您可以按以下方式序列化时使用上面的合约解析程序:
string json = JsonConvert.SerializeObject(psi,
new JsonSerializerSettings() {ContractResolver = new SerializableExpandableContractResolver()});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.