【问题标题】:Json Array loopJson 数组循环
【发布时间】:2020-01-27 18:00:59
【问题描述】:

我正在开发 asp.net 视觉工作室。我正在使用 jquery 调用 web 方法。 在 asp.net 中,我正在创建一个动态数据表。我正在返回 JsonConvert.SerializeObject(dt)

$.ajax({
    type: 'POST',
    url: 'Default.aspx/GetCustomers',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    success: function (result) {

        console.log((result.d));
        cars = result.d;
        $.each(cars, function (index, key) {

            console.log(index);
            console.log(key);

        })

    }
});

这是从asp.net返回的json

[{"Name":"Jones","January 2019":53.0000,"February 2019":33.0000,"March 2019":55.0000 }]

当我遍历它 $.each 时,我得到一个错误

SCRIPT5007:SCRIPT5007:“in”的操作数无效:预期对象

如何访问键和值?

【问题讨论】:

  • 试试$.each(cars[0], function (index, key) { 看起来它正在看到一个数组,它需要一个对象,该对象位于数组内部。
  • 您是否通过 console.log((result.d)); 在控制台中看到预期的 json 数组输出?还有,result.d的数据类型是什么,是字符串还是对象?
  • @sam : 输出是这个 [{"Name":"Jones","January 2019":53.0000,"February 2019":33.0000,"March 2019":55.0000 }]
  • 这是result.d 还是result 中的内容?
  • console.log(result.d) 是 [{"Name":"Jones","January 2019":53.0000,"February 2019":33.0000,"March 2019":55.0000 }]

标签: javascript c# jquery asp.net


【解决方案1】:

循环通过这个 JSON:

const cars = [{
  "Name": "Jones",
  "January 2019": 53.0000,
  "February 2019": 33.0000,
  "March 2019": 55.0000
}]

// jQuery
$.each(cars, function(index, key) {
  const car = Object.entries(key)
  console.log('$.each()')
  $.each(car, function(i, el) {
    console.log('key:', el[0])
    console.log('val:', el[1])
  })
})

// JavaScript
cars.forEach(e => {
  console.log('forEach()')
  for (let [key, val] of Object.entries(e)) {
    console.log(`key: ${key}`)
    console.log(`val: ${val}`)
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

我认为关键是 Object.entries()

更多关于Object.entries()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries

【讨论】:

    【解决方案2】:

    另一种方法是使用 Object.Keys,如下所示:

    var cars = [
    	{
    		"Name": "Jones",
    		"January 2019": 53.0000,
    		"February 2019": 33.0000,
    		"March 2019": 55.0000
    	}
    ];
    
    $.each(cars,
    	function(index, dict) {
    
    		console.log(index);
    		console.log(dict);
    
    		Object.keys(dict)
    			.forEach(function eachKey(key) { // or .forEach(function (key) { 
    				console.log(key + ': ' + dict[key]); 
    			});
    
    	});
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    【讨论】:

      猜你喜欢
      • 2015-01-27
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2012-09-16
      • 2013-08-16
      • 2012-10-14
      • 2014-05-18
      相关资源
      最近更新 更多