iT邦幫忙

0

請問要怎麼取JSON的第二筆資料

fufu 2022-11-11 17:16:191338 瀏覽
  • 分享至 

  • xImage

試了很久還是試不出來
請問要怎麼取JSON的第二.3.4....筆資料
我指的是第二筆整個object的資料
各位高手前輩一定一看就知道 我既然都obj.lenth了
就是要for 迴圈印出來了
嘗試$.each(obj[1],function(key,value)沒辦法取到第二筆資料
請問我該怎麼取?

$(document).ready(function(){



                        var data1="";
                        data1 = '<?=$data ?>';

                        var obj = JSON.parse(data1);
                        alert(obj.length);
                        var data2="";
                        var tel="";
                        var number="";

                        $.each(obj,function(key,value){
                               data2 = value.username;
                               tel = value.telnumber;
                               .....

                              $('.result').html('<p>姓名:'+data2+'</p><p>電話:'+tel+'</p><p>編號:'+number+'</p><p>年齡:'+age+'</p><p>住址:'+address+'</p>');
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

3
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2022-11-12 13:49:39
最佳解答

首先,你要先了解一件事。陣列與物件的不同。

在javascript中,含索引值(這邊是指0~N)的KEY,才會算是陣列。
例:

array = ['A','B','C']

如有自帶KEY的值。一徑會視為物件

obj = {'A':'A','B':'B','C':'C'}

each只能處理陣列。無法處理物件。
一般陣列值要能跑 each 或 foreach的話。
需要先將其轉換成陣列
如使用 Object.values
例:

obj = {'A':'A','B':'B','C':'C'}
Object.values(obj).each(function(item){
    console.log(item);
})

不過,使用 Object.values 只會將值取出來,KEY值就消失了。
如果需要連帶取得KEY值的話。則可以利用 Object.keys
取得KEY值後。再利用KEY值去取值的方式

例:

obj = {'A':'A','B':'B','C':'C'}
Object.keys(obj).each(function(key){
    let item = obj[key];
    console.log('key',key,'item',item);
})

當然,我不確定你是否是碰上了物件回圈的情況。
我只是猜測能遇上這件事。

一些人不了解的情況下。
很常發生這一類的事。
畢竟在javascript的特性,跟後端語言的EACH特性解讀會比較不一樣。
大多數的後端語言是能FOREACH物件的。
但javascript是不行的,只能特別處理。

PS:雖然,都是JSON。

fufu iT邦新手 5 級 ‧ 2022-11-14 08:02:05 檢舉

謝謝前輩的指導 釐清我的觀念
比起陣列 字串
JSON真的很方便 但是有時候還不熟悉不好處理

1
allenlwh
iT邦高手 1 級 ‧ 2022-11-11 17:56:35
{
	"Content": [{
		"GR_QTY": "0",
		"HIT_RATIO": "0 %",
		"HIT_DATE": "2099/12/31"
	}, {
		"GR_QTY": "0",
		"HIT_RATIO": "0 %",
		"HIT_DATE": "2099/12/31"

	}]
}
var dataurl_2 = "http://localhost:49687/api/GetData";
var newdata;

$.ajax({
    url: dataurl_2,
    type: "GET",
    async: false,
    success: function (data) {                        
        newdata = data;   
    }
});
aryData = newdata;

$.each(aryData.Content, function (idx, item) {
    strHTML += '<tr>';
    strHTML += '<td>' + item.GR_QTY + '</td>'; 
    strHTML += '<td>' + item.HIT_RATIO + '</td>'; 
    strHTML += '<td>' + item.HIT_DATE + '</td>'; 

    strHTML += '</tr>';
});
fufu iT邦新手 5 級 ‧ 2022-11-14 07:55:45 檢舉

感謝 果然是高手
一看就知道我前面用的是ajax

我要發表回答

立即登入回答