【问题标题】:Json.net custom JsonConvert for Dictionary<string,object>[]Json.net 为 Dictionary<string,object>[] 自定义 JsonConvert
【发布时间】:2023-04-06 11:29:01
【问题描述】:

我已成功使用自定义 JsonConverter 来处理字典中可能是字符串或对象的项目:

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

但现在我有一个属性是字典数组。

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

如何设置自定义转换器以将其应用于字典的值?

这与将转换器应用于字典项的值的大多数问题不同,因为我正在尝试将转换器应用于字典数组中的字典项的值,并且 JSonPropery 属性没有出现允许这样做。

【问题讨论】:

  • @PeterB - 我认为不一样。该问题试图将字符串值转换为值数组。我正在尝试将转换器应用于属性是字典数组的字典值。
  • @PeterB - 不同之处在于,在该问题中,转换器作为一个整体应用于属性,我需要将其应用于字典项的值。

标签: c# .net json.net json-deserialization


【解决方案1】:

我想我通过将属性分成另一个类来解决这个问题。

[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; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    相关资源
    最近更新 更多