2014-01-11 354 views
0

如何从JSON获取特定数据?如何从JSON获取特定数据?

JSON:

[ 
    { "TotalPageCount": 66 }, 
    { "TotalTitleCount": 199 }, 
    { "Title":   "cola" }, 
    { "Title":   "elvis tom" }, 
    { "Title":   "dvd" } 
] 

JavaScript代码:

<script> 
    function updateTitlesArea() { 
     $.getJSON(
     "/lates/json/", 
     null, 
     function(data) { 
      $("#titlesDiv").html(""); 
      $("#pagesDiv").html(""); 
      var x; 
      if (data.length > 0) { 
       for (x in data) { 
        $("#titlesDiv").html($("#titlesDiv").html() + 
         "<li><a href=\"/" + data[x].Title.replace(/ /g, '-') + "\">" + data[x].Title + "</a>" + 
         "</li>" 
       ); 
       } 
      } else { 
       $("#titlesDiv").html("<li>no entry</li>"); 
      } 
     }); 
    } 
</script> 

我想从Javascript获得{"TotalPageCount":66}{"TotalTitleCount":199} 。请给我一个方法来得到它们?

非常感谢。

更新

出错了,我尝试了所有的解决方案,但没有正常工作。 我对JSON格式控制:

当前的Json生成器:

   if (title.Any()) 
       { 
        foreach (var x in title) 
        { 
         result.AddLast(new { Title = x.Title }); 
        } 
       } 
       result.AddLast(new { TotalPageCount = totalPageCount }); 
       result.AddLast(new { TotalTitleCount = totalTitleCount }); 

       return Json(result.ToList(), JsonRequestBehavior.AllowGet); 

我做了一个JSON格式的小的变化,把总页数和标题计数结束JSON的。

电流:

[{ “标题”: “草”},{ “标题”: “耶尔马兹 ozdil”},{ “标题”: “DVD”},{“标题“:”真正地疯狂地 深深地“},{”标题“:”deportivo de la coruna“},{”Title“:”sizi seven kisiyle sevdiginiz kisinin farkli olmasi“},{”Title“:”kadinlarin bavul gibi标题“:”hosbuldum“},{”标题“:”sark cibani“},{”标题“:”mevsimler gecerken“},{”标题“:”bir kerede kolon gibi sicmak “},{”Title“:”gelismek“},{”Title“:”faz ve alasim bil imi“},{”Title“:”memetq“},{”Title“:”ogrencilerin sinav kagidina dustugu ilginc notlar“},{”Title“:”cami duvarina isemek“},{”Title“ sonra tovbe etmek“},{”Title“:”gida tarim ve hayvancilik bakanligi“},{”Title“:”cevre orman ve sehircilik bakanligi“},{”Title“:”google da nikah masasi calmak“} { “TotalPageCount”:9},{ “TotalTitleCount”:199}]

我的代码,并给出例子我仍然无法得到TotalPageCount和TotalTitleCount。

备案:也许下次我可以在标题旁添加更多属性标题。 所以我想保持这种json格式。

感谢提前

+1

数据[0] .TotalPageCount –

+0

不要使用'换in'的阵列,并且不做'$( “#titlesDiv”)。HTML($( “#titlesDiv”)。HTML ()+',因为它是不必要的破坏性和低效率。我不能相信回答者不纠正这些模式。 –

+2

如果你控制JSON结构,一个更明智的方法可能是'{“TotalPageCount”:66,“TotalTitleCount “:199,”标题“:[”可乐“,”猫王“,”DVD“]}' –

回答

0

这是一个数组,所以

if (data.length > 0) { 
    var obj = data[0]; // array, not object 
    for (key in obj) { 
      $("#titlesDiv").html(
       $("#titlesDiv").html() + 
       "<li><a href=\"/" + obj[key].Title.replace(/ /g, '-') + "\">" + 
        obj[key].Title + "</a>" + 
       "</li>" 
     ); 
    } 
1

当你x in data你对象的每个关键。所以你必须做一个简单的检查,如果它是TotalPageCountTotalTitleCount。喜欢这个;

<script> 
    function updateTitlesArea() { 
     $.getJSON(
      "/lates/json/", 
      null, 
      function(data) { 
       var x, totalPageCount, totalTitleCount; 
       $("#titlesDiv").html(""); 
       $("#pagesDiv").html(""); 
       if (data.length > 0) { 
        for (x in data) { 
         if('TotalPageCount' == x) { 
          totalPageCount = data[x]; 
          continue; 
         } 
         if('TotalTitleCount' == x) { 
          totalTitleCount = data[x]; 
          continue; 
         } 
         $("#titlesDiv").html($("#titlesDiv").html() + 
          "<li><a href=\"/" + data[x].Title.replace(/ /g, '-') + "\">" + data[x].Title + "</a>" + 
          "</li>" 
         ); 
        } 
        // You can do here whatever you want with 'totalPageCount' and 'totalTitleCount' 
       } else { 
        $("#titlesDiv").html("<li>no entry</li>"); 
       } 
      }); 
    } 
</script> 
0

你使用的是jQuery吗?你可以尝试这样的事情:

var prom = $.getJSON('/lates/json/'), 
    ar; 
prom.then(function (data) { ar = data; }); 

之后,你将不得不在响应数组AR。你将能够以这种方式访问​​你所需的值:

ar[0].TotalPageCount 
ar[1].TotalTitleCount 

我希望这会帮助你。祝你好运。

0

用你目前的JSON格式,它会是这样的。不过,如果您可以更改JSON格式,那会更好。

<script> 
    function updateTitlesArea() { 
     $.getJSON(
      "/lates/json/", 
      null, 
      function(data) { 
       $("#titlesDiv").html('<ul></ul>'); // <li> goes inside <ul> or <ol> 
       $("#pagesDiv").empty(); 

       var has_titles = false; 

       for(var i = 0; i < data.length; i++) { 
        if("Title" in data[i]) { 
         $("#titlesDiv ul").append(
          '<li><a href="/' + data[i].Title.replace(/ /g, '-') + '">' + data[i].Title + "</a>" + 
          "</li>" 
         ); 
         has_titles = true; 
        } 
       } 
       if(!has_titles) { 
        $("#titlesDiv ul").html("<li>no entry</li>"); 
       } 
      } 
     ); 
    } 
</script>