C# 使用Json.net反序列化Json
解析此Json并获取值Usign Json.NET。请帮助我找到解析的方法。 提前谢谢 我正在使用Json.net Dll进行解析,下面是我要解析的Json代码和C#代码,但是我得到了错误,混淆了从这个Json文件中获取的值 myjson.json:C# 使用Json.net反序列化Json,c#,json,json.net,C#,Json,Json.net,解析此Json并获取值Usign Json.NET。请帮助我找到解析的方法。 提前谢谢 我正在使用Json.net Dll进行解析,下面是我要解析的Json代码和C#代码,但是我得到了错误,混淆了从这个Json文件中获取的值 myjson.json: { "Published_DocsCount": 5, "Public_ReadAccess": 2, "Public_CommentAccess": 3, "Public_WriteAccess": 2, "Public_DocsCount":
{
"Published_DocsCount": 5,
"Public_ReadAccess": 2,
"Public_CommentAccess": 3,
"Public_WriteAccess": 2,
"Public_DocsCount": 7,
"PublicWithLink_ReadAccess": 2,
"PublicWithLink_CommentAccess": 2,
"PublicWithLink_WriteAccess": 2,
"PublicWithLink_DocsCount": 6,
"InternalCollaborators_CollaboratorsCount": 1,
"InternalCollaborators_Read": 3,
"InternalCollaborators_Comment": 0,
"InternalCollaborators_Write": 5,
"InternalCollaborators_DocsCount": 8,
"OutsideDomain_CollaboratorsCount": 6,
"OutsideDomain_Read": 6,
"OutsideDomain_Comment": 4,
"OutsideDomain_Write": 6,
"OutsideDomain_DocsCount": 16,
"Domain_ReadAccess": 3,
"Domain_CommentAccess": 2,
"Domain_WriteAccess": 2,
"Domain_DocsCount": 7,
"DomainWithLink_ReadAccess": 2,
"DomainWithLink_CommentAccess": 2,
"DomainWithLink_WriteAccess": 2,
"DomainWithLink_DocsCount": 6,
"MimeTypes": {
"image/png": 10,
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": 9,
"application/vnd.google-apps.spreadsheet": 8,
"application/vnd.google-apps.document": 8,
"application/vnd.google-apps.presentation": 6,
"application/vnd.google-apps.drawing": 5,
"application/vnd.google-apps.form": 1
},
"SharedToDomains": {
"18009029392713646891": {
"users": 1,
"documents": 3
},
"neverfailbackup.biz": {
"users": 1,
"documents": 3
},
"00781621852878369984": {
"users": 1,
"documents": 3
},
"thedomainmigration.info": {
"users": 1,
"documents": 3
},
"liveonlinecloud.info": {
"users": 1,
"documents": 3
},
"domainmigration.info": {
"users": 1,
"documents": 1
}
},
"SharedFromDomains": {
"mydomainmigration.info": {
"users": 1,
"documents": 8
}
}
}}
霉菌代码:
public void getSummaryJson()
{
string FilePath = "D:\\jsontxt.json";
string all = "";
StringBuilder sb = new StringBuilder();
using (StreamReader r = new StreamReader(FilePath))
{
string line;
while ((line = r.ReadLine()) != null)
{
sb.AppendLine(line);
}
all = sb.ToString();
var parsed = JObject.Parse(all);
var container = DeserializeFromJson<List<Attributes>>(parsed[]);
}
}
public class Attributes
{
[JsonProperty("MimeTypes")]
public string MimeTypes{ get; set; }
[JsonProperty("SharedToDomains")]
public string SharedToDomains{ get; set; }
[JsonProperty("SharedFromDomains")]
public string SharedFromDomains{ get; set; }
}
public class DataJsonAttributeContainer
{
public List<Attributes> attributes { get; set; }
}
public static T DeserializeFromJson<T>(string json)
{
T deserializedProduct = JsonConvert.DeserializeObject<T>(json);
return deserializedProduct;
}
public void getSummaryJson()
{
string FilePath=“D:\\jsontxt.json”;
字符串全部=”;
StringBuilder sb=新的StringBuilder();
使用(StreamReader r=新的StreamReader(文件路径))
{
弦线;
而((line=r.ReadLine())!=null)
{
给某人加上一行(一行);
}
all=sb.ToString();
var parsed=JObject.Parse(全部);
var container=DeserializeFromJson(已解析[]);
}
}
公共类属性
{
[JsonProperty(“MimeTypes”)]
公共字符串MimeTypes{get;set;}
[JsonProperty(“SharedToDomains”)]
公共字符串SharedToDomains{get;set;}
[JsonProperty(“SharedFromDomains”)]
公共字符串SharedFromDomains{get;set;}
}
公共类DataJsonAttributeContainer
{
公共列表属性{get;set;}
}
公共静态T反序列化FromJSON(字符串json)
{
T deserializedProduct=JsonConvert.DeserializeObject(json);
返回反序列化的产品;
}
您可以使用此网站检查JSON数据:
我将您的JSON数据复制到网站上,您似乎忘记了结尾处的“}”字符:
{
"Published_DocsCount": 5,
"Public_ReadAccess": 2,
"Public_CommentAccess": 3,
"Public_WriteAccess": 2,
"Public_DocsCount": 7,
"PublicWithLink_ReadAccess": 2,
"PublicWithLink_CommentAccess": 2,
"PublicWithLink_WriteAccess": 2,
"PublicWithLink_DocsCount": 6,
"InternalCollaborators_CollaboratorsCount": 1,
"InternalCollaborators_Read": 3,
"InternalCollaborators_Comment": 0,
"InternalCollaborators_Write": 5,
"InternalCollaborators_DocsCount": 8,
"OutsideDomain_CollaboratorsCount": 6,
"OutsideDomain_Read": 6,
"OutsideDomain_Comment": 4,
"OutsideDomain_Write": 6,
"OutsideDomain_DocsCount": 16,
"Domain_ReadAccess": 3,
"Domain_CommentAccess": 2,
"Domain_WriteAccess": 2,
"Domain_DocsCount": 7,
"DomainWithLink_ReadAccess": 2,
"DomainWithLink_CommentAccess": 2,
"DomainWithLink_WriteAccess": 2,
"DomainWithLink_DocsCount": 6,
"MimeTypes": {
"image/png": 10,
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": 9,
"application/vnd.google-apps.spreadsheet": 8,
"application/vnd.google-apps.document": 8,
"application/vnd.google-apps.presentation": 6,
"application/vnd.google-apps.drawing": 5,
"application/vnd.google-apps.form": 1
},
"SharedToDomains": {
"18009029392713646891": {
"users": 1,
"documents": 3
},
"neverfailbackup.biz": {
"users": 1,
"documents": 3
},
"00781621852878369984": {
"users": 1,
"documents": 3
},
"thedomainmigration.info": {
"users": 1,
"documents": 3
},
"liveonlinecloud.info": {
"users": 1,
"documents": 3
},
"domainmigration.info": {
"users": 1,
"documents": 1
}
},
"SharedFromDomains": {
"mydomainmigration.info": {
"users": 1,
"documents": 8
}
}
}
您必须根据JSON结构对类型进行建模。这些课程应该有效:
public class AttributeContainer
{
public Dictionary<string,int> MimeTypes { get; set; }
public Dictionary<string,Domain> SharedToDomains { get; set; }
public Dictionary<string,Domain> SharedFromDomains { get; set; }
public int Published_DocsCount { get; set; }
public int Public_ReadAccess { get; set; }
public int Public_CommentAccess { get; set; }
public int Public_WriteAccess { get; set; }
public int Public_DocsCount { get; set; }
public int PublicWithLink_ReadAccess { get; set; }
public int PublicWithLink_CommentAccess { get; set; }
public int PublicWithLink_WriteAccess { get; set; }
public int PublicWithLink_DocsCount { get; set; }
public int InternalCollaborators_CollaboratorsCount { get; set; }
public int InternalCollaborators_Read { get; set; }
public int InternalCollaborators_Comment { get; set; }
public int InternalCollaborators_Write { get; set; }
public int InternalCollaborators_DocsCount { get; set; }
public int OutsideDomain_CollaboratorsCount { get; set; }
public int OutsideDomain_Read { get; set; }
public int OutsideDomain_Comment { get; set; }
public int OutsideDomain_Write { get; set; }
public int OutsideDomain_DocsCount { get; set; }
public int Domain_ReadAccess { get; set; }
public int Domain_CommentAccess { get; set; }
public int Domain_WriteAccess { get; set; }
public int Domain_DocsCount { get; set; }
public int DomainWithLink_ReadAccess { get; set; }
public int DomainWithLink_CommentAccess { get; set; }
public int DomainWithLink_WriteAccess { get; set; }
public int DomainWithLink_DocsCount { get; set; }
}
public class Domain
{
public int Users { get; set; }
public int Documents { get; set; }
}
使用AttributeContainer
类型进行反序列化
var container = DeserializeFromJson<AttributeContainer>(data);
var container=DeserializeFromJson(数据);
“我遇到错误”没有提供任何信息。到底发生了什么?请阅读,实际上我不知道如何显示这个Json,我想要上面文件中的所有值。。我得到了他的推荐信。但他们使用的是事件结果,而不是我从StreamReader传递的字符串。在代码格式化块的末尾,他在文章中有这样的内容。我不认为这是他的问题。@TimS。我有一个有效的Json文件,我刚刚更新了一些参数。。我想用C来解析这些值,我写了差不多一样的东西,但你把我打得落花流水。因为我没有什么要补充的…+1!乌乌克·哈科奥乌拉尔:嗨,谢谢!它起作用了。
var container = DeserializeFromJson<AttributeContainer>(data);