2014-01-11 492 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>