2015-03-13 71 views
-2

我知道我可以定義自定義轉換器,但在這種情況下,我必須修飾要使用我的轉換器序列化的類,我希望按順序定義默認序列化方法的重載以個性化序列化,但保持它通用(我的意思是它應該適用於每種類型的對象)使用通用自定義轉換器覆蓋Newtonsoft序列化

目標是生成沒有主括號的「json」。

在此先感謝,

文森佐。

回答

2

這不工作嗎?

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

替代使用正則表達式:

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

喜弗洛裏安,感謝您的答覆我已經\t以爲您的解決方案,但是,我的首要原因,我需要避免序列化改造後,這就是爲什麼我需要去串行裏面爲了避免調用方法:writer.WriteStartObject();和writer.WriteEndObject(); – 2015-03-13 14:10:32

+0

@vincenzogreco通常最簡單的解決方案是你可以選擇的......你必須問自己,結果會有什麼不同?實現自定義轉換器可能會導致您達到目標,但複雜性成本如何?你可以簡單地寫一個擴展方法從字符串中剝離外部括號,並且可以在任何需要的地方使用它... – 2015-03-13 14:45:44

2

你不必修飾類與轉換器,當你序列化對象可以提供轉換器將串行和轉換器就知道了它可以序列化的類型。 (在方法CanConvert上)

下面是一小段代碼,我們使用自定義轉換器DataRowCollectionConverter以特定方式轉換我們的數據行類型對象集合。 DataRowCollectionConverter是JsonConverter

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

嗨安吉洛感謝您的回覆,但我想要一個通用的方法,而您的示例是特定的。 – 2015-03-15 16:05:24