【问题标题】:C#: How do you build semi-structured objects analogous to JSON?C#:如何构建类似于 JSON 的半结构化对象?
【发布时间】:2017-01-11 12:10:21
【问题描述】:

我想遍历一个 2D 数组 contents[,],然后构建一个类似 JSON 的对象。结构如下图。然后将其发送到服务器端点,由服务器端函数处理并存储到数据库中。

在 JavaScript 中这很简单,但那是因为输入是动态的。据我所知,在 C# 中构建 sem 结构化数据有两种选择:

  1. 按照此处所述创建模型:Convert C# Object to Json Object,然后转换为 JSON
  2. 构建嵌套哈希表(不是字典,因为在需要构建对象之前我不会知道值的类型)

在 C# 中执行此操作的正常方法是什么?我也遇到过“POCO”这个词,它似乎有点对应于第 1 点。?

[
    {
        tableName: someName,
        fields: [ordered, list, of, field, names],
        values: [
            [ordered, list, of, cell, row, values],
            [ordered, list, of, cell, row, values],
            [ordered, list, of, cell, row, values]
        ]
    },
    {
        tableName: someName,
        fields: [ordered, list, of, field, names],
        values: [
            [ordered, list, of, cell, row, values],
            [ordered, list, of, cell, row, values],
            [ordered, list, of, cell, row, values]
        ]
    },
    etc
]

【问题讨论】:

  • c# 具有动态类型:msdn.microsoft.com/en-us/library/dd264736.aspx JSON.Net 库被广泛用于操作 JSON:newtonsoft.com/json(通过 nuget 下载了 3,120,111 次最新版本)。至于哪种方法最适合你,我无法回答,因为这个问题太宽泛了,我不知道你在做什么,你使用的数据,或者你的个人喜好是什么。有很多方法可以采用。
  • 结构的哪一部分是动态的?这对我来说看起来很有条理。您有一个具有名称的表,其中包含字段列表以及将放置到这些字段中的数据。仅仅是数据的值是不同的类型吗?还是我错过了什么?
  • 是的。只有值的类型不同
  • 来自 JavaScript,对象的概念略有不同,因为您可以直接构建它们。另一方面,C# 似乎需要一个模板。我认为这个问题的答案可能对没有使用基于类的架构的 OO 语言背景的人有益。
  • 如果只有值是不同的类型,那么只需使用“对象”类型。

标签: c# json poco


【解决方案1】:

您的结构似乎是刚性的,只有数据值不同,在这种情况下,您应该只为您的值使用对象类型。你的班级可能看起来像这样;

class MyObject
{
    String Tablename;
    List<Field> myFields = new List<Field>();
    List<object> values = new List<object>();
}

或者您可以直接创建一个 Json 对象并在需要检索任何其他数据时对其进行解析。

【讨论】:

    猜你喜欢
    • 2017-06-24
    • 2019-03-23
    • 2022-11-24
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多