Javascript 如何创建嵌套的json数据?

Javascript 如何创建嵌套的json数据?,javascript,jquery,json,Javascript,Jquery,Json,我有一个带有json数据的休假列表表 var app=angular.module('myApp',[]) app.controller('myController', ['$scope', '$http', function ($scope, $http) { $scope.init = function () { $scope.holidayList=[ { 'month':'JAN', 'd

我有一个带有json数据的休假列表表

var app=angular.module('myApp',[])
app.controller('myController', ['$scope', '$http', function ($scope, $http) {
    $scope.init = function () {

$scope.holidayList=[
             {
                'month':'JAN',
                'date':01,
                'day': 'Mon',
                'occasion':'New Year'
            },
             {
                'month':'FEB',
                'date': 03,
                'day': 'Fri',
                'occasion':'Maha Shivaratri'
            }

        ];
}
}])

在这里,我需要在一个月内显示多个假期,为此我更改了json,如下所示

$scope.holidayList=[
             {
                'month':'JAN',
                'date':[01,07,20],
                'day': ['Mon','Fri','Sun'],
                'occasion':['New Year','pongal','bhogi']
            },
             {
                'month':'FEB',
                'date': 03,
                'day': 'Fri',
                'occasion':'Maha Shivaratri'
            }

        ];

是否正确?

是的,它正确且格式良好。

我建议您使用以下格式,这样会更方便

   [{
      'month': 'JAN',
      'Leaves': [{
          'date': '2017-11-05T08:22:06.750Z',
          'day': 'Mon',
          'occassion': 'some_occasion'
          },{
           'date': '2017-11-05T08:22:06.750Z',
           'day': 'Mon',
           'occasion': 'some_occasion'
         }
       ]
     },{
       'month': 'FEB',
       'Leaves': [{
         'date': '2017-11-05T08:22:06.750Z',
         'day': 'Mon',
         'occasion': 'some_occasion'         
          }, {
         'date': '2017-11-05T08:22:06.750Z',
         'day': 'Mon',
         'occasion': 'some_occasion'
    }
}]

您还可以在日期字段中使用时间戳,并编写一个过滤器来分隔日期和日期,在这种情况下,时间戳始终是推荐的

你的方法是正确的

<>但是考虑到模型必须独立于实现,并且是保持它干净和易于阅读的良好实践。 以下是我的建议:

1) 不要将模型直接添加到范围中。给它自己的变量,这样你可以更容易地引用它

2) 不要将日期拆分为日/月。即使它们是递归事件,您也可以将年份添加到现有的固定日期中以查找星期几。您可以在以后设置日期的显示格式:

'd'
:月份中的天(1-31)

'EEE'
:一周中的一天(太阳周六)

3) 避免并行数组会使代码复杂化,如:

'date':[01, 07, 20],
'day': ['Mon','Fri','Sun']
4) 不要在类似模型的级别中包含演示说明。视图负责将数据组织到各个级别

我的做法如下:

var holidayList=[
    {
        date: ['01-01-2016', '02-01-2016'],
        event: 'New Year'
    },
        date: ['13-01-2016', '14-01-2016'],
        month: 'Bhogi'
    },
    {
        date: ['14-01-2016', '17-01-2016'],
        event: 'Thai Pongal'
    },
    {
        date: ['13-02-2016', '14-02-2016'],
        event: 'Maha Shivaratri'
    }
];
$scope.holidayList = holidayList;

这是正确的,但在我看来,它也很难正确显示。我想这样使用:
[{'JAN':[{'date':'01',…},{'date':'07',…}]}]
@peetya无需指定
月份
?是的,但我无法在html中获取此数据。这就是为什么会询问它是否正确。您将使用索引表示法访问嵌套数据,例如{list.day[0]}