gpt4 book ai didi

c# - 使用 NewtonSoft 将 JSON 对象反序列化为 .Net 对象

转载 作者:太空狗 更新时间:2023-10-30 00:30:38 24 4
gpt4 key购买 nike

我有一个 json 对象,我想将其反序列化为它的 .Net 类型而不强制转换它。

我想我在文档的某处读到,您可以将一个属性传递到 json 中,以告知反序列化器它可以尝试转换的 .Net 对象类型。

我找不到我读这篇文章的地方。

我想避免使用

var myNewObject = JsonConvert.DeserializeObject<MyClass>(json);

得到这样的东西

MyClass myNewObject = JsonConvert.DeserializeObject(json);

我从 HttpRequest 获得了我的 json 对象,并希望从这个嵌套对象实例化适当的类。目前,反序列化为已知项目效果很好,但需要更灵活的东西,而不需要通过解析方法管理所有已知对象。

最佳答案

您可以像这样将对象类型保存在您的 json 字符串中。

你必须交给转换器的设置

public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects
};

如何使用给定的设置序列化:

var json = JsonConvert.SerializeObject(data, Settings);

这是你的 json 字符串的样子:

{
"$type":"YourNamespaceOfTheClass",
"YourPropertyInTheClass":valueOfProperty
}

如何使用给定的设置进行反序列化:

var object = JsonConvert.DeserializeObject(json, Settings);

现在您的 json 字符串不仅包含序列化对象,还包含序列化对象的类型。因此,在反序列化 json 字符串时,您不必担心类型是否正确。

关于c# - 使用 NewtonSoft 将 JSON 对象反序列化为 .Net 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284897/

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