0

parse this Json and Get The Values Usign Json.NET.Help Me to Find The Way To Parse. Thanks in Advance..

I am Using Json.net Dll For Parsing,Below is my Json Code and C# code to Parse, But I am Getting Error, Confuced to Get the Values From This Json File.

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;
  }
arun
  • 323
  • 6
  • 17
  • "I am getting error" gives us no information. What *exactly* happens? Please read http://tinyurl.com/so-list – Jon Skeet Dec 10 '13 at 14:28
  • Actually I am Confuced How To display This Json I want All the Values From The Above File.. I got Reference From http://stackoverflow.com/questions/17801607/json-parsing-in-c-sharp-using-json-net . But they using event result instead of that i am passing string from streamreader – arun Dec 10 '13 at 14:34

2 Answers2

2

You have to model your type according to the JSON structure. These classes should work:

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

You can also use File.ReadAllText method:

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

Use AttributeContainer type for deserialization.

var container = DeserializeFromJson<AttributeContainer>(data); 
Ufuk Hacıoğulları
  • 37,978
  • 12
  • 114
  • 156
0

You can use this website to check your JSON data:

http://jsoneditoronline.org/index.html

I copied your JSON data to the website and it seems like you have forgotten a '}' character at the end:

{
"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
    }
}
}
Bura Chuhadar
  • 3,653
  • 1
  • 14
  • 17
  • He had this in his post past the end of the code formatting block. I don't think this was his problem. – Tim S. Dec 10 '13 at 14:42
  • @TimS. I am Having Valid Json File Some Argument Missed I just Update Now .. I want Parse these Values using C# – arun Dec 10 '13 at 14:46