Как десериализовать JSON с повторяющимися именами свойств в одном и том же объекте
У меня есть строка JSON, которая, как я ожидаю, будет содержать дубликаты ключей, и я не могу порадовать JSON.NET.
Мне было интересно, если кто-нибудь знает лучший способ (может быть, используяJsonConverter
? ) чтобы получить JSON.NET для измененияJObject
ребенокJObjects
вJArrays
когда он видит дубликаты имен ключей?
// For example: This gives me a JObject with a single "JProperty\JObject" child.
var obj = JsonConvert.DeserializeObject<object>("{ \"HiThere\":1}");
// This throws:
// System.ArgumentException : Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject.
obj = JsonConvert.DeserializeObject<object>("{ \"HiThere\":1, \"HiThere\":2, \"HiThere\":3 }");
Фактический JSON, который я пытаюсь десериализовать, намного сложнее, и дубликаты вложены на нескольких уровнях. Но приведенный выше код демонстрирует, почему мне это не удается.
Я понимаю, что JSON неверен, поэтому я спрашиваю, есть ли в JSON.NET способ обойти это. Ради аргумента, скажем, у меня нет контроля над JSON. Я действительно использую определенный тип для родительского объекта, но конкретное свойство, которое вызывает проблемы, будет либо строкой, либо другим вложенным объектом JSON. По этой причине ошибочный тип свойства - «объект».