C# 是一種廣泛使用的編程語言,而 JSON(JavaScript Object Notation)是一種輕量級數據格式,常用于網絡數據傳輸和配置文件中。當從多個數據源讀取 JSON 數據時,可能會出現重復的信息。如何在 C# 程序中去除重復的 JSON 數據呢?本文將介紹兩種方法,供大家參考。
第一種方法是使用 System.Linq 命名空間中的 Distinct() 方法。該方法可以根據指定的鍵去除序列中的重復元素。例如:
JArray jsonArray = JArray.Parse(jsonString); var distinctArray = jsonArray .GroupBy(j =>(string)j["name"]) .Select(g =>g.First()) .ToList(); string distinctJsonString = JsonConvert.SerializeObject(distinctArray);
在上面的代碼中,我們先使用 JArray.Parse() 方法將 JSON 字符串轉換為 JArray 對象。接著使用 GroupBy() 方法將 JArray 中的元素按照 "name" 字段進行分組,再使用 Select() 方法選擇每組的第一個元素。最后使用 ToList() 方法將結果轉換成 List
第二種方法是創建自定義的比較器類。我們可以繼承 IEqualityComparer
class MyEqualityComparer : IEqualityComparer{ public bool Equals(JToken x, JToken y) { return x["name"].ToString() == y["name"].ToString(); } public int GetHashCode(JToken obj) { return obj["name"].GetHashCode(); } } JArray jsonArray = JArray.Parse(jsonString); var distinctArray = jsonArray .Distinct(new MyEqualityComparer()) .ToList(); string distinctJsonString = JsonConvert.SerializeObject(distinctArray);
在上面的代碼中,我們先定義了一個名為 MyEqualityComparer 的類,并實現了 IEqualityComparer
最后,我們使用 Distinct() 方法并傳入自定義的比較器對象,將 JArray 中的重復元素去除,并使用 SerializeObject() 方法將結果轉換為 JSON 字符串。