你们好,
我目前正在尝试传递一些混合 JSON,并且想知道是否可以执行以下操作?
struct example_data
{
public Dictionary<string, List<string>> information {get; set;}
}
class TestClass
{
static void Main(string[] args)
{
string test_string = @"{'EventSpecificInformation':
{
'measure':''
,'Long name':'test_name'
,'Short name':'test_s_name'
,'Description':''
,'Status':'Real (Imported)'
,'Viewers':['Everyone']
,'Modifiers':['Supervisor only']
,'calculation':''
}
}"
example_data deserialized_entry = JsonConvert.DeserializeObject<example_data>(test_string)
}
}
正如您所期望的,上面的代码片段会失败,但我希望能够避免将每个 JSON 条目包装在 JSON 数组中,或者必须在 C# 中创建自定义 JSON 读取器。
任何有关此事的建议将不胜感激。
最佳答案
听起来您正在寻找的是将 JSON 字符串解析为动态对象,如下所示:
dynamic myObject = JsonConvert.DeserializeObject(@"{'EventSpecificInformation':
{
'measure':''
,'Long name':'test_name'
,'Short name':'test_s_name'
,'Description':''
,'Status':'Real (Imported)'
,'Viewers':['Everyone']
,'Modifiers':['Supervisor only']
,'calculation':''
}
}");
string desc = myObject.EventSpecificInformation.Description;
string longName = myObject.EventSpecificInformation["Long name"];
如果您的 JSON 输入没有显式静态模型,这可能是您的最佳选择。对于名称中没有空格的属性,您可以使用 member access syntax 直接引用它们,对于那些有空格的人,您可以使用 indexer access syntax 引用它们.
关于C# 将混合 JSON 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60229021/