Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Json.net反序列化Json_C#_Json_Json.net - Fatal编程技术网

C# 使用Json.net反序列化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":

解析此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": 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);