序列化来自 post async .NET 6 的响应

Serialize response from post async .NET 6

我正在尝试在序列化时修改响应。 TimeJoinedhh:mm (GMT +_) 格式的字符串返回,我想修改为 24 小时格式,在下面的实例中将是 14:46

public class Person
{
    public string Name { get; set; }
    public string TimeJoined { get; set; } // "12:46 (GMT +2)"
}

public async Task<Person> GetPerson()
{
    var response = await client.PostAsJsonAsync(url, new { id = "aydt344d" });
    return await response.Content.ReadFromJsonAsync<Person>();
}

看看这个Custom Json Converter

之后可以创建一个JsonSerializerOptions(可以是全局的)作为参数传给ReadFromJsonAsync。完成!

然而,在 Person class 中,TimeJoinedstring,因此您需要使用 TimeSpan 或解析时间并将其重新格式化为您想要的格式

24 小时的密钥采用以下字符串格式:

hh for 12h format
HH for 24h format
z is for time zone

让我们把它们放在一起,比如:

string.Format(DateTime.Now.ToString("HH:mm ({0} z)"), "GMT");

要将其放入您的个人对象中,您可以执行以下操作:

var person = await response.Content.ReadFromJsonAsync<Person>(); 
person.TimeJoined = string.Format(DateTime.Now.ToString("HH:mm ({0} z)"), "GMT");
return person;

或者采用该格式并在您的客户序列化程序中使用它作为提到的另一个答案,这样您就可以整体使用它。

当然你也可以做一个静态方法re-used也可以

测试将给出这样的时间格式:

15:00 (GMT +2)