4 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以正常調(diào)用異步方法,您的執(zhí)行將被暫停,直到該方法返回為止,并且您可以以標(biāo)準(zhǔn)方式返回模型。像這樣打電話:
string jsonContent = await actionContext.Request.Content.ReadAsStringAsync();
它將為您提供原始JSON。

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果您想使用TypeNameHandling.Auto但又擔(dān)心安全性,或者不喜歡api消費(fèi)者需要幕后知識(shí),則可以處理$ type反序列化自身。
public class InheritanceSerializationBinder : DefaultSerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
switch (typeName)
{
case "parent[]": return typeof(Class1[]);
case "parent": return typeof(Class1);
case "child[]": return typeof(Class2[]);
case "child": return typeof(Class2);
default: return base.BindToType(assemblyName, typeName);
}
}
}
然后將其連接到global.asax.Application__Start
var config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { Binder = new InheritanceSerializationBinder() };
最終,我在包含不同類型對(duì)象的屬性上使用了包裝類和[JsonProperty(TypeNameHandling = TypeNameHandling.Auto)],因?yàn)槲覠o(wú)法通過(guò)配置實(shí)際的類來(lái)使其正常工作。
這種方法允許消費(fèi)者在他們的請(qǐng)求中包括所需的信息,同時(shí)允許將允許值的文檔獨(dú)立于平臺(tái),易于更改和易于理解。所有這些都無(wú)需編寫(xiě)自己的converster。
感謝:https : //mallibone.com/post/serialize-object-inheritance-with-json.net,向我展示了該字段屬性的自定義反序列化器。
- 4 回答
- 0 關(guān)注
- 603 瀏覽
添加回答
舉報(bào)