gpt4 book ai didi

c# - 将 JSON 转换为对象,然后根据对象类型执行不同的操作

转载 作者:行者123 更新时间:2023-11-30 14:50:06 25 4
gpt4 key购买 nike

以前,我有一个 OrderedDictionary,我将它转换成 JSON,然后在代码的某些部分我需要将它反序列化回 OrderedDictionary。

现在,我需要将该属性的类型更改为列表。我需要做一个向后兼容性。我如何编写代码以便在反序列化 JSON 时将其反序列化为一个对象,然后我检查对象是否为 List,执行某些操作,否则如果对象为 OrderedDictionary,则执行某些操作。

目前,如果我将它反序列化为一个对象,我会得到一个 JObject。我正在使用 Newtonsoft.Json。

我期待的是这样的:

var x = JsonConvert.DeserializeAnonymousType(jsonString, new object());

if (x is List)
doSomething1();
else if (x is OrderedDictionary)
doSomething2();

最佳答案

在下面使用:

object x = JsonConvert.DeserializeObject(jsonString);

if (x is Newtonsoft.Json.Linq.JObject) // OrderedDictionary
doSomething1();
else if (x is Newtonsoft.Json.Linq.JArray) // List
doSomething2();

这仅适用于 Json.NET 并且 jsonString 也必须由 Json.NET 序列化字符串。

来自 Json.NET 的 Serialization Guide , List (implemented IList) 将被序列化为 JSON 数组,OrderedDictionary (implemented IDictionary) 将被序列化为 JSON 对象。因此,返回值将是不同的类型,分别是JArrayJObject

关于c# - 将 JSON 转换为对象,然后根据对象类型执行不同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37406408/

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