Пользовательский JsonConvert для словаря Json.net <строка, объект> [] - PullRequest
0 голосов
/ 04 сентября 2018

Я успешно использовал пользовательский JsonConverter для обработки элементов в словаре, которые могут быть либо строкой, либо объектом:

[JsonProperty("result", ItemConverterType = typeof(TableFieldOrStringConverter), )]
public Dictionary<string, TableField> Records { get; set; }

Но теперь у меня есть свойство, представляющее собой массив словарей.

public Dictionary<string, TableField>[] Records { get; set; }

Как настроить пользовательский конвертер, чтобы применить его к значению словаря?

Это отличается от большинства вопросов, которые применяют конвертер к значению элемента словаря, потому что я пытаюсь применить конвертер к значению элемента словаря в массиве словарей, а атрибут JSonPropery не отображается чтобы позволить это.

1 Ответ

0 голосов
/ 04 сентября 2018

Я думаю, что решил эту проблему, разбив свойство на другой класс.

[JsonObject]
public class TableUpdateResponse : IAPIResponse
{
    [JsonProperty("result")]
    public TableRow[] Records { get; set; }
}

[JsonDictionary(ItemConverterType = typeof(TableFieldOrStringConverter))]
public class TableRow : Dictionary<string, TableField>
{

}

[JsonObject]
public class TableField
{
    [JsonProperty("display_value")]
    public string DisplayValue { get; set; }

    [JsonProperty("value")]
    public string Value { get; set; }

    /// <summary>
    /// Applicable when the field references another record
    /// </summary>
    [JsonProperty("link")]
    public string Link { get; set; }
}
...