Parsing JSON with JSON.NET

12,644

Solution 1

Have you tried things like?

string gsearchresultclass= (string)o["responseData"]["results"][0]["GsearchResultClass"];
string title= (string)o["responseData"]["results"][0]["title"];
string titlenoformat= (string)o["responseData"]["results"][0]["titleNoFormatting"];
string url = (string)o["responseData"]["results"][0]["postUrl"];
string content = (string)o["responseData"]["results"][0]["content"];
string author = (string)o["responseData"]["results"][0]["author"];
string blogurl = (string)o["responseData"]["results"][0]["blogUrl"];
string date = (string)o["responseData"]["results"][0]["publishedDate"];

What exactly are you trying to get into the name variable?

Solution 2

Using Json.Net, you can deserialize the object like this:

BlogSearch search = JsonConvert.DeserializeObject<BlogSearch>(content);

You would define the BlogSearch object like this:

[JsonObject(MemberSerialization.OptIn)]
public class BlogSearch
{
    [JsonProperty(PropertyName = "responseData")]
    public BlogSearchResponse SearchResponse { get; set; }
}

You keep defining objects until you have all the ones you are interested in.

Solution 3

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx
Its a good alternative to your method, that I would recommend...
Hope that helps...

Share:
12,644
C..
Author by

C..

Updated on June 04, 2022

Comments

  • C..
    C.. almost 2 years

    I have a JSON string:

     {"responseData": 
         {"results": [
             {"GsearchResultClass": "GblogSearch",
              "title":"\u003cb\u003eParis Hilton\u003c/b\u003e shops at Sydney Michelle boutique in the Beverly Glen \u003cb\u003e...\u003c/b\u003e",
               "titleNoFormatting":"Paris Hilton shops at Sydney Michelle boutique in the Beverly Glen ...",
               "postUrl":"http://www.celebrity-gossip.net/celebrities/hollywood/paris-hilton-sydney-michelle-stockup-215844/",
               "content":"\u003cb\u003eParis Hilton\u003c/b\u003e shops at Sydney Michelle boutique in the Beverly Glen Mall - \u003cb\u003eParis Hilton\u003c/b\u003e: Sydney Michelle Stockup.",
               "author":"The Gossip Girls at (c) gossipgirls.com",
               "blogUrl":"http://www.celebrity-gossip.net/",
               "publishedDate":"Tue, 23 Feb 2010 22:26:00 -0800"
             },
             {"GsearchResultClass":"GblogSearch",
              "title":"\u003cb\u003eParis Hilton\u003c/b\u003e having wardrobe woes as she met with her lawyer",
              "titleNoFormatting":"Paris Hilton having wardrobe woes as she met with her lawyer",
              "postUrl":"http://www.celebrity-gossip.net/celebrities/hollywood/paris-hiltons-wardrobe-woes-215855/",
              "content":"\u003cb\u003eParis Hilton\u003c/b\u003e having wardrobe woes as  she met with her lawyer - \u003cb\u003eParis Hilton's\u003c/b\u003e Wardrobe Woes.",
              "author":"The Gossip Girls at (c) gossipgirls.com","blogUrl":"http://www.celebrity-gossip.net/",
              "publishedDate":"Wed, 24 Feb 2010 11:07:56 -0800"
             },
             {"GsearchResultClass":"GblogSearch",
              "title":"HOT GALLERY: \u003cb\u003eParis Hilton\u003c/b\u003e Turns Her Frown Upside Down | OK \u003cb\u003e...\u003c/b\u003e",
              "titleNoFormatting":"HOT GALLERY: Paris Hilton Turns Her Frown Upside Down | OK ...",
              "postUrl":"http://www.okmagazine.com/2010/02/hot-gallery-paris-hilton-turns-her-frown-upside-down/",
              "content":"\u003cb\u003eParis Hilton\u003c/b\u003e kept her game face on yesterday as she headed to a meeting in Hollywood. The socialite maintained her composure, but eventually cracked a smile, 201002.",
              "author":"Brittany Talarico",
              "blogUrl":"http://www.okmagazine.com/",
              "publishedDate":"Wed, 24 Feb 2010 07:57:10 -0800"
             },
             {"GsearchResultClass":"GblogSearch",
              "title":"Love It Or Hate It: \u003cb\u003eParis Hilton\u003c/b\u003e | ImNotObsessed.com",
              "titleNoFormatting":"Love It Or Hate It: Paris Hilton | ImNotObsessed.com",
              "postUrl":"http://www.imnotobsessed.com/2010/02/24/love-it-or-hate-it-paris-hilton",
              "content":"tweetmeme_url \u003d \"http://www.imnotobsessed.com/2010/02/24/love-it-or-hate-it-\u003cb\u003eparis\u003c/b\u003e-\u003cb\u003ehilton\u003c/b\u003e\";tweetmeme_element_id \u003d '#tweetmeme-widget-139430e62dc37d7a2aa71840d6444572';That's some dress \u003cb\u003eParis Hilton\u003c/b\u003e was seen wearing while shopping in ...",
              "author":"Vera",
              "blogUrl":"http://www.imnotobsessed.com/",
              "publishedDate":"Wed, 24 Feb 2010 10:44:28 -0800"
             }],
        "cursor": { 
            "pages": [
                {"start":"0","label":1},
                {"start":"4","label":2},
                {"start":"8","label":3},
                {"start":"12","label":4},
                {"start":"16","label":5},
                {"start":"20","label":6},
                {"start":"24","label":7},
                {"start":"28","label":8}],
            "estimatedResultCount":"8035445",
            "currentPageIndex":0,
            "moreResultsUrl":"http://blogsearch.google.com/blogsearch?oe\u003dutf8\u0026ie\u003dutf8\u0026safe\u003dactive\u0026source\u003duds\u0026start\u003d0\u0026hl\u003den\u0026q\u003dParis+Hilton"
            }
         }, 
    "responseDetails": null, 
    "responseStatus": 200}
    

    ed. note: line breaks added for readability

    and I'm using Json.NET to parse it, however its giving me a null

    this is my code:

    JObject o = JObject.Parse(json); // <- where json is the string above
    
    string name = (string)o["responseData"];
    

    BUT its giving me this error :

    Can not convert {null} to String.