使用JSON.Net序列化数组时忽略重复项

Cip*_*agă 3 c# serialization duplicates json.net

澄清(对于处于相同情况的任何人):

请注意,我的任务是序列化现有的旧对象.因此,我宁愿调整序列化程序而不是干扰数据结构.

我相信在大多数情况下,最好直接从数据中删除重复项,如@ danny-chen的回答所示.


作为我想要使用JSON.Net序列化的对象的一部分,有一个string[] files包含重复项的属性:

some/path/to/f1.jpg
some/path/to/f1.jpg
some/path/to/f2.jpg
some/path/to/f3.jpg
some/path/to/f2.jpg
Run Code Online (Sandbox Code Playgroud)

让我们假设这些不一定是有序的(f2, f3, f2).

是否可以序列化数组并忽略重复项?预期结果:

{
  "files": [
    "some/path/to/f1.jpg",
    "some/path/to/f2.jpg",
    "some/path/to/f3.jpg"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了PreserveReferencesHandling设置,但它不起作用,因为file数组中的每个都是一个不同的对象,可能重复的值.

Che*_*hen 5

它不是序列化的一部分,它是数据处理的一部分.我建议你在序列化之前删除重复项.

string[] files = GetFiles();
data.Files = files.Distinct().ToArray(); 
//serialize data

//instead of data.Files = files; and do tricky things in serialization
Run Code Online (Sandbox Code Playgroud)