gpt4 book ai didi

C# JsonProperty 名称为 "formattable"

转载 作者:行者123 更新时间:2023-12-03 04:17:34 25 4
gpt4 key购买 nike

我有一个这样注释的模型:

[DataMember(EmitDefaultValue = false)]
[JsonProperty("extension_{0}_name")]
public string name {get; set;}

此数据是通过对 Azure 域的查询检索的,通过 Postman,我可以看到在特定字段中填充的实际属性:

{
"extension_129af129412_name":"John",
...
}

哪里129af129412匹配AzurePropertyExtensionId属性,在我的 Web.Config 中定义为:

<appSettings>
<add key="AzurePropertyExtensionId" value="129af129412" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>

但是,当我尝试使用 JsonConvert.DeserializeObject<> 反序列化对象时未检索该字段。我怀疑这是因为绑定(bind)是在字段 name_{0}_property 上进行的而不是name_129af129412_property .

我猜 xdt:Transform 有问题Web.Config 的属性:无论谁编写它都假设 JsonProperty name 会被正确重写,但事实并非如此。一旦连载为 JsonConvert ,该字段序列化为extension_{0}_name 。这里出了什么问题?

旁注:Azure 有一个有趣的行为,我们将带有 {0} 的序列化模型发送到 Azure。占位符已就位,并且该字段无论如何都会保存在 Azure 上。因此,看起来虽然我们在 WebServer 上由于字段名称不匹配而无法反序列化字段,但 Azure 能够自行解决这个问题。我有兴趣了解这是如何实现的。

最佳答案

事实证明,有一个 ContractResolver负责JsonProperty转换的实例未作为 JsonSerializerSettings 的一部分传递的字段名称。将解析器实例添加到(反)序列化步骤后,即可成功检索该字段。

关于C# JsonProperty 名称为 "formattable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51788237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com