dotnet/runtime
Auf GitHub ansehenDuplicate object keys shouldn't result in an ArgumentException
Open
#71.784 geöffnet am 7. Juli 2022
area-System.Text.Jsonbughelp wanted
Repository-Metriken
- Stars
- (17.886 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 12T 11h) (661 gemergte PRs in 30 T)
Beschreibung
Description
Currently, when a parsed JSON object has duplicate keys, an ArguementException is thrown from the underlying dictionary implementation. I would expect this to be thrown if I were manually attempting to add an existing key, but not from parsing.
Reproduction Steps
var json = JsonNode.Parse("[{\"foo\":1, \"bar\":2, \"foo\":3}]") as JsonArray;
var item = json[0]["bar"];
Expected behavior
Maybe throw JsonException?
Actual behavior
ArgumentException is thrown. Stack trace:
System.ArgumentException : An item with the same key has already been added. Key: {0} (Parameter 'foo')
at System.Text.Json.ThrowHelper.ThrowArgumentException_DuplicateKey(String propertyName)
at System.Text.Json.JsonPropertyDictionary`1.AddValue(String propertyName, T value)
at System.Text.Json.JsonPropertyDictionary`1.Add(String propertyName, T value)
at System.Text.Json.Nodes.JsonObject.InitializeIfRequired()
at System.Text.Json.Nodes.JsonObject.System.Collections.Generic.IDictionary<System.String,System.Text.Json.Nodes.JsonNode>.TryGetValue(String propertyName, JsonNode& jsonNode)
at System.Text.Json.Nodes.JsonObject.TryGetPropertyValue(String propertyName, JsonNode& jsonNode)
at System.Text.Json.Nodes.JsonObject.GetItem(String propertyName)
at System.Text.Json.Nodes.JsonNode.get_Item(String propertyName)
Regression?
No response
Known Workarounds
No response
Configuration
Seen in all released versions (.Net 6 and previous)
Other information
No response