gpt4 book ai didi

c# - 当仅知道所需对象的字符串名称时,C# 中的 JsonConvert.DeserializeObject

转载 作者:太空宇宙 更新时间:2023-11-03 17:00:14 25 4
gpt4 key购买 nike

假设有关文档的信息存储在条形码中,信息的结构因文档类型而异。但是文件的类型是事先不知道的;条形码告诉我们正在处理的文档类型:

条形码值不会像这样存储分隔字符串:

author|date|subject
author|date|subject|approvedby1;approvedby2

但将包含 json 符号:

 FOO|{"author": "Smokey", "date": "01/01/2015", "subject": "widgets"}

GOO|{"author": "Smokey", "date": "01/01/2015", "subject": "widgets", "approvals": ["Mike","Jane"]}

当我们获取条码文本数据时,我们从 | 左边的值中看到我们需要实例化 FOO 的分隔符或 GOO .我们捕获 | 右边的字符串并将其提供给 JsonConvert .

如何分辨JsonConvert.DeserializeObject<some type>从其 json 表示中返回一个 GOO 对象?

  var myGoo = JsonConvert.DeserializeObject<?>(jsonStringGOO)

尖括号之间的内容 < >

编辑:理想情况下,无需诉诸 switch 语句。

假设当前命名空间包含所有可能类型的类定义。

最佳答案

如何尝试使用反射获取程序集的类型

var data = input.Split('|');

var assembly = Assembly.LoadFrom("MyDll.dll");

var myType = assembly.GetType("My.Namespace." + data[0]); // GOO / BAR / etc

JsonConvert.DeserializeObject(data[1], myType)

Assembly.GetType(string name)

JsonConvert.DeserializeObject(string value, Type type)

注意为了调试,您可以使用这样的代码获取类型的全名

var t = typeof(Goo);
Debug.WriteLine(t.FullName);

关于c# - 当仅知道所需对象的字符串名称时,C# 中的 JsonConvert.DeserializeObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38917694/

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