C# 如何在C语言中解析嵌套的JSON数据结构#

C# 如何在C语言中解析嵌套的JSON数据结构#,c#,json,nested,C#,Json,Nested,我正在尝试解析以下JSON数据结构: { Command: "somecommand", ContractNo: "11111111", DocsFiles: [{DocumentID: "01", Files: [{DocKey: "Key01", PrimKey: "PKey01"}, {DocKey: "Key01", PrimKey: "PKey02"}],

我正在尝试解析以下JSON数据结构:

{
    Command: "somecommand", 
    ContractNo: "11111111", 
    DocsFiles:  [{DocumentID: "01", Files: [{DocKey: "Key01", PrimKey: "PKey01"}, 
                                          {DocKey: "Key01", PrimKey: "PKey02"}],
                {DocumentID: "02", Files: [{DocKey: "Key02", PrimKey: "PKey03"}, 
                                          {DocKey: "Key02", PrimKey: "PKey04"}]]
}
这是一个代码:

public class Result
{
    public string DocumentID {get; set;}
    public List<Files> FilesList {get; set;}

    public class Files
    {
        public string DocKey {get; set;}
        public string PrimKey {get; set;}
    }
}


private void shareDocumentFiles(RequestContext pContext)
{   
    try
    {
        string vContractNo = pContext.JsonParameters["ContractNo"].ToString();

        var vFiles = pContext.JsonParameters["DocsFiles"].ToString();

        var results = JsonConvert.DeserializeObject<List<Result>>(vFiles);

        ...

请帮助解决此问题。

我将您的JSON更改为:

{
  "Command": "somecommand",
  "ContractNo": "11111111",
  "DocsFiles": [
    {
      "DocumentID": "01",
      "Files": [
        {
          "DocKey": "Key01",
          "PrimKey": "PKey01"
        },
        {
          "DocKey": "Key01",
          "PrimKey": "PKey02"
        }
      ]
    },
    {
      "DocumentID": "02",
      "Files": [
        {
          "DocKey": "Key02",
          "PrimKey": "PKey03"
        },
        {
          "DocKey": "Key02",
          "PrimKey": "PKey04"
        }
      ]
    }
  ]
}
然后我创建了三个简单的匹配类:

public class InputClass
{
    public string Command { get; set; }
    public string ContractNo { get; set; }
    public List<DocFile> DocFiles { get; set; }
}

public class DocFile
{
    public string DocumentID { get; set;}
    public List<FileInfo> Files { get; set; }
}
public class FileInfo
{
    public string DocFile { get; set;}
    public string PrimKey { get; set; }
}
公共类InputClass
{
公共字符串命令{get;set;}
公共字符串ContractNo{get;set;}
公共列表文件{get;set;}
}
公共类文档文件
{
公共字符串DocumentID{get;set;}
公共列表文件{get;set;}
}
公共类文件信息
{
公共字符串DocFile{get;set;}
公共字符串PrimKey{get;set;}
}
然后我读取JSON的内容,并使用以下命令对其进行反序列化:

 var fileContents = File.ReadAllText("DocFiles.json");
 var docFiles = JsonConvert.DeserializeObject<DocFile>(fileContents);
var fileContents=File.ReadAllText(“DocFiles.json”);
var docFiles=JsonConvert.DeserializeObject(fileContents);
它就像一个符咒。注意,您的
DocFiles
是一个集合,就像
docy
/
primcey
pair一样


如果您的合同编号和文档ID必须始终是数字,那么您可能希望将它们作为整数而不是字符串键入(在这种情况下,它们会在JSON中失去引号)

您的JSON有问题,代码可能也有问题。我读取JSON的方式是doc 01与PrimKey 01和02相关联。在这种情况下,“文件:”对象应包含DocKey/PrimKey对数组(即,两个DocKey/PrimKey对象应位于方括号内(
[]
)。如果您这样做,那么您需要将C#更改为match抱歉,我已经编辑了JSON,yes Files对象包含DocKey/primkey数组。如果您只将
public List FilesList{get;set;}
更改为
public List Files{get;set}
或对
FilesList
属性(如
[JsonProperty(PropertyName=“Files”)]
。因为
filelist
与json中的任何属性都不匹配。
 var fileContents = File.ReadAllText("DocFiles.json");
 var docFiles = JsonConvert.DeserializeObject<DocFile>(fileContents);