c#解析为json格式

时间:2015-09-27 07:06:29

标签: c# json excel

我试图从Excel工作表中获取数据并将其复制到txt文件中。我成功获取数据但唯一的问题是如何以这种格式解析它(json格式):

{
    "First sheet": {
        "A": {
            "1": "The content of A1",
            "3": "The content of A3"
        },
        "B": {
            "1": "The content of B1",
            "2": "The content of B2",
            "7": "The content of B7"
        },
        "C": {
            "1": "The content of C1",
            "2": "The content of C2",
            "7": "The content of C7"
        },
        "AA": {
            "98": "The content of AA98"
        }
    },
    "2nd sheet": {
        "D": {
            "4": "Content of D4 in 2nd sheet",
            "6": "56",
            "7": "2.3"
        }
    }
}

我的意思是,我如何在此层次结构中创建对象? (对象内对象内的对象......):

"First sheet": {
    "A": {
        "1": "The content of A1",

p.s:我尝试创建对象并用以下方法解析它们: var json = new JavaScriptSerializer()。Serialize(sheets [0])

3 个答案:

答案 0 :(得分:0)

你可以在这里查看http://json2csharp.com/它为json生成课程大多数时候都不完美但通常会有很多帮助。

答案 1 :(得分:0)

您要做的是称为序列化/格式化。 Parse正在使用字符串并将其置于结构中。

定义这些类:

public class Root : SortedDictionary<string, Sheet>
{
}
public class Sheet : SortedDictionary<string, Row>
{
}
public class Row : SortedDictionary<string, string>
{
}

安装nuget包newtonsoft.json

然后你就可以:

Root myRoot;
//copy data to myRoot
string serialized = JsonConvert.Serialize(myRoot);

唯一的问题是它们将按照密钥进行排序,而不是按照我接受或不接受的文件顺序排序。

答案 2 :(得分:0)

列表项

虽然我确信至少有一个库可以帮助您完成此操作,但如果您从左右和自上而下阅读电子表格数据,则可以自行轻松完成此操作。如果是这样,我建议使用类似以下逻辑的Dictionary对象:

  1. 实例化词典以保存工作表信息。
  2. 对于每张工作表,请执行以下操作:

    a。实例化词典以保存行信息。

    b。对于每一行,请执行以下操作:

    1. 实例化词典以保存列信息。
    2. 对于每个具有值的列,请使用列号作为键向列信息字典中添加值。
    3. 使用行字母作为键将列信息字典添加到行字典中。
    4. c。将行信息字典添加到工作表信息字典中,并将工作表名称作为键。

      序列化工作表字典应该能为您提供所需的结果。