C# 如何在C语言中解析嵌套的JSON数据结构#
我正在尝试解析以下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"}],
{
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);