2013-12-10 101 views
0

解析这个Json并获取值Usign Json.NET.Help我找到解析的方法。 在此先感谢..反序列化Json使用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 
    } 
} 

}}

mycode的:

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; 
    } 
+0

“我得到错误”给我们没有任何信息。什么*确切*发生?请阅读http://tinyurl.com/so-list –

+0

什么是错误? –

+0

其实我很自信如何显示这个JSON我想从上面的文件中的所有值..我从参考http://stackoverflow.com/questions/17801607/json-parsing-in-c-sharp-using-json网络。但他们使用事件结果,而不是我从streamreader传递字符串 – arun

回答

2

你必须根据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; } 
} 

您还可以使用File.ReadAllText方法:

string data = File.ReadAllText("D:\\jsontxt.json"); 

使用AttributeContainer类型的反序列化。

var container = DeserializeFromJson<AttributeContainer>(data); 
+1

我写了几乎相同的东西,但你击败了我一拳。因为我没有添加任何东西...... + 1! –

+0

UfukHacıoğulları:嗨,谢谢你!它的工作。 – arun

0

您可以使用该网站来检查你的JSON数据:

http://jsoneditoronline.org/index.html

我复制你的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 
    } 
} 
} 
+0

他在他的帖子超过代码格式化块的末尾。我不认为这是他的问题。 –

+0

是的,那好吧..使用C#代码解析它.. – arun

+0

@TimS。我有有效的Json文件一些参数错过我只是现在更新..我想解析这些值使用C# – arun