0

我正在使用 Refit 进行 HTTP 调用,它对于需要直接 JSON 结构的请求按预期工作。我们现在有一个要求,其中 JSON 请求的表示方式与下面的略有不同。

类(具有以下两个属性)

Id,
Name

预期的 JSON 结构:

{
   "Id" : {
      "iv" : "1234567"
   },
   "Name" : {
      "iv" : "Test"
    }
}

我们已经实现了一个负责这种转换的 JsonConverter。但是当我像下面这样将转换器传递给 Refit 时,该类没有像我们预期的那样序列化。

var refitSettings = new RefitSettings {
    ContentSerializer = new NewtonsoftJsonContentSerializer(
        new JsonSerializerSettings {
            Converters = new List<JsonConverter> { new InvariantConverter() }
        })
};

services.AddRefitClient<ICustomerRefitClient>(refitSettings)
    .ConfigureHttpClient(x => {
        x.BaseAddress = <URL> ;
    });

看起来 Refit 似乎不知道所配置的转换器。

我不确定我在这里缺少什么。有什么帮助吗?

4

1 回答 1

0

也许你应该试试这个:它对我有用

var settings = new RefitSettings(new NewtonsoftJsonContentSerializer());
JsonConvert.DefaultSettings = () => new JsonSerializerSettings()
{
   Converters = { new InvariantConverter() }
};

我用 jsonconverterattribute 装饰了这个属性

[JsonConverter(typeof(InvariantConverter))]
public Tag[] tags { get; set; }
于 2021-11-30T07:08:28.237 回答