Json.net deserializing list gives duplicate items

That is because you are adding items in the constructor. A common approach in deserializers when processing a list is basically:

  • read the list via the getter
    • if the list is null: create a new list and assign via the property setter, if one
  • deserialize each item in turn, and append (Add) to the list

this is because most list members don’t have setters, i.e.

public List<Foo> Items {get {...}} // <=== no set

Contrast to arrays, which must have a setter to be useful; hence the approach is usually:

  • deserialize each item in turn, and append (Add) to a temporary list
  • convert the list to an array (ToArray), and assign via the setter

Some serializers give you options to control this behavior (others don’t); and some serializers give you the ability to bypass the constructor completely (others don’t).

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)