使用Generic自定义转换器覆盖Newtonsoft序列化

时间:2015-03-13 11:10:09

标签: c# json.net

我知道我可以定义一个自定义转换器但是在这种情况下我必须装饰我喜欢使用我的转换器序列化的类,我想定义一个默认序列化方法的重载,以便个性化序列化但是保持通用(我的意思是它应该适用于每种类型的对象)

目标是生成一个" json"没有主括号。

提前致谢,

蒙特拉。

2 个答案:

答案 0 :(得分:2)

这也不行吗?

string json = "{\"Name\":\"Max\"}";
string withoutBrackets = json.Substring(1, json.Length - 2);

使用正则表达式的替代方案:

string withoutBrackets = Regex.Replace(json, @"(?:^\{)|(?:\}$)",string.Empty);

答案 1 :(得分:2)

您不必使用转换器装饰类,当您序列化对象时,您可以将转换器提供给序列化器,转换器将知道它可以序列化的类型。 (在方法CanConvert上)

下面是一小段代码,我们使用自定义转换器DataRowCollectionConverter以特定方式转换数据行类型对象的集合。 DataRowCollectionConverter是一个JsonConverter

 this.Result = JsonConvert.SerializeObject(result,  DataRowCollectionConverter());;