C# 将混合 JSON 转换为对象

标签 c# json

你们好,

我目前正在尝试传递一些混合 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/

相关文章:

c# - Mac OS X 上的 Mono - 并行 HTTP 下载限制为 2

c# - 如何使用 Blob 存储中的 Azure 函数和 C# 以及将 JSON 数据作为列存储在 Azure 表存储中从 JSON 文件获取数据

c# - 使用 Ninject 在类中注入(inject)字符串属性

javascript - jQuery - Ajax 不返回 json 响应

c# - 转换后如何在图形对象中的任意位置绘制

c# - 您可以在 Outlook 插件 (VSTO) 中打开窗体或窗口吗

java - AngularJS $http get 返回 null 状态 0

c# - 将 JSON 数组绑定(bind)到 ASP.NET MVC 3 中的列表的问题模型

javascript - json.js 和 json2.js 有什么用?

java - 在 ViewPager 上跨多个 fragment 加载 Json,需要更好的方法