gpt4 book ai didi

c# - 如何将 JSON.Net 中的 JObject 转换为 T

转载 作者:IT王子 更新时间:2023-10-29 04:33:50 24 4
gpt4 key购买 nike

我知道我可以使用 JsonConvert.DeserializeObject<T>(string) , 但是,我需要查看对象的 _type (可能不是第一个参数)以确定要转换到的特定类。本质上,我想做的是:

//Generic JSON processor for an API Client.
function MyBaseType ProcessJson(string jsonText)
{
var obj = JObject.Parse(jsonText);
switch (obj.Property("_type").Value.ToString()) {
case "sometype":
return obj.RootValue<MyConcreteType>();
//NOTE: this doesn't work...
// return obj.Root.Value<MyConcreteType>();
...
}
}
...

// my usage...
var obj = ProcessJson(jsonText);
var instance = obj as MyConcreteType;
if (instance == null) throw new MyBaseError(obj);

最佳答案

首先将JSON解析为JObject。然后查找 _type使用 LINQ to JSON 的属性。然后根据值切换并使用 ToObject<T> 进行转换:

var o = JObject.Parse(text);
var jsonType = (String)o["_type"];

switch(jsonType) {
case "something": return o.ToObject<Type>();
...
}

关于c# - 如何将 JSON.Net 中的 JObject 转换为 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10218827/

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