te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Parsing JSON with JSON.NET - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Parsing JSON with JSON.NET - Stack Overflow

programmeradmin3浏览0评论

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":"/",
           "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",
           "blogUrl":"/",
           "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":"/",
          "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","blogUrl":"/",
          "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":"/",
          "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 posure, but eventually cracked a smile, 201002.",
          "author":"Brittany Talarico",
          "blogUrl":"/",
          "publishedDate":"Wed, 24 Feb 2010 07:57:10 -0800"
         },
         {"GsearchResultClass":"GblogSearch",
          "title":"Love It Or Hate It: \u003cb\u003eParis Hilton\u003c/b\u003e | ImNotObsessed",
          "titleNoFormatting":"Love It Or Hate It: Paris Hilton | ImNotObsessed",
          "postUrl":"",
          "content":"tweetmeme_url \u003d \"\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":"/",
          "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":"\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.

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/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.",
           "blogUrl":"http://www.celebrity-gossip/",
           "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/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.","blogUrl":"http://www.celebrity-gossip/",
          "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./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 posure, but eventually cracked a smile, 201002.",
          "author":"Brittany Talarico",
          "blogUrl":"http://www.okmagazine./",
          "publishedDate":"Wed, 24 Feb 2010 07:57:10 -0800"
         },
         {"GsearchResultClass":"GblogSearch",
          "title":"Love It Or Hate It: \u003cb\u003eParis Hilton\u003c/b\u003e | ImNotObsessed.",
          "titleNoFormatting":"Love It Or Hate It: Paris Hilton | ImNotObsessed.",
          "postUrl":"http://www.imnotobsessed./2010/02/24/love-it-or-hate-it-paris-hilton",
          "content":"tweetmeme_url \u003d \"http://www.imnotobsessed./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./",
          "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./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.
Share Improve this question edited Sep 6, 2013 at 16:47 shytikov 9,5589 gold badges61 silver badges105 bronze badges asked Feb 25, 2010 at 0:29 C..C.. 7,55710 gold badges32 silver badges38 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 6

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.

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?

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

If you're posting your JSON object raw to the Web API then you will run into this problem. The Deserializer is expecting an actual string and not an object or an array. Because it is using a JsonMediaTypeFormatter, it won't know how to translate what is being passed to it.

You need to do the following to avoid the null:

public HttpResponseMessage postBlogSearch([FromBody] JToken json){
    var jsonResult = JObject.Parse(json.ToString());
    var name = jsonResult["responseData"].ToString();
}

For more information see this article.

发布评论

评论列表(0)

  1. 暂无评论