Javascript 如何拆分JSON文件以在下拉框中使用

Javascript 如何拆分JSON文件以在下拉框中使用,javascript,jquery,json,backbone.js,marionette,Javascript,Jquery,Json,Backbone.js,Marionette,我使用的是木偶网/主干网,我有一个包含多个对象的JSON文件,我需要用这个JSON文件中的项目填充一个选择框。因此,有一个用于accountType、State和Date的下拉框 目前,我只关心accountType,但我找不到一种方法来拆分JSON文件,以便下拉列表仅显示“完整”或“试用” 我有一个JSON文件,它看起来类似于: { "accountType":["Full","Trial"], "states": [{"state":"AL","stateDescription":"Alab

我使用的是木偶网/主干网,我有一个包含多个对象的JSON文件,我需要用这个JSON文件中的项目填充一个选择框。因此,有一个用于accountType、State和Date的下拉框

目前,我只关心accountType,但我找不到一种方法来拆分JSON文件,以便下拉列表仅显示“完整”或“试用”

我有一个JSON文件,它看起来类似于:

{
"accountType":["Full","Trial"],
"states": [{"state":"AL","stateDescription":"Alabama","featured":"A1"},
{"state":"AK","stateDescription":"Alaska","featured":"B1"}],
"dates":[{"dateDescription":"Jan","month":1,"year":2008},
{"dateDescription":"Feb","month":2,"year":2008}]
}
我没有编写JSON文件,这是我必须使用的-我在.js文件中访问它,如下所示:

initialize: function () {
this.on('change', this.change);
var that = this;
$.getJSON("webapp/jsondata", function (data) {
that.set('accountType', data);});
}
但在我的下拉框中,我基本上得到:

Full, Trial
[object Object], [object Object]
以那种形式

我想我理解了原因,因为我没有拆分JSON文件,只是不知道怎么做。在线阅读一页又一页,但似乎没有什么是合适的

如果您有任何建议,请温柔一点

编辑:---

这是主干数据中的全部代码。现在可以填充accountType框,但当我用其他下拉列表复制它时,所有下拉列表都变为空白

define([ 'backbone', 'underscore', 'vent', ], function (Backbone, _, vent) {
'use strict';

return Backbone.Model.extend({

    url: {},

    loaded: false,

    defaults: {
        accountType: [],
        states: [],
        dates: [],
    },


    initialize: function () {
        this.on('change', this.change);
        var that = this;
        $.getJSON("webapp/jsondata", function (data) {
            that.set({
            states: data.states,
        });
       });
        $.getJSON("webapp/jsondata", function (data) {
            that.set({
            dates: data.dates,
        });
       });

$.getJSON("webapp/jsondata", function (data) {
            that.set({
            accountType: data.accountType,
        });
       });
    },  
});
});
我猜这是因为AccountType只有一个属性,而“states”有State、description和featured。我只想选择“AL”和“AK”作为例子。所以我需要一种方法来分割我的数据(我认为),并将其分配到下拉列表中

编辑--

以下是查看代码:

define([ 'marionette', 'templates', 'vent', 'select'],
function (Marionette, templates, vent, select) {
    "use strict";

    return Marionette.ItemView.extend({

        template: templates.inputView,

        serializeData: function () {
            return {
                states: this.options.meta.get('states'),
                dates: this.options.meta.get('dates'),
                accountType: this.options.meta.get('accountType'),
            };
        },

});
});

您可以使用模型/集合的
parse
方法


试试这个:

initialize: function () {
    //this.on('change', this.change);
    this.fetch();
}

这里有人问了一个更具体的问题,让我明白了这一点:


那是什么。set('accountType',data);});确切地说,如果不知道此类详细信息(接受何种类型/格式的数据),就很难创建一些实现。您是否尝试了data.Full或data.Trial?在您的最后一行脚本中??它(应该)将accountType数组(在Backbones元数据模型中)设置为配置文件数据,我认为问题是,它正在提取JSON文件中的所有内容。不仅仅是两个accountType选项。我刚刚尝试了'that.set(data.Full);'但是它不起作用视图没有加载我已经查看了文档,但无法解决它,尝试了:$.getJSON(“webapp/jsondata”,function(data){that.set({accountType:data.accountType,});});但是没有luckCan您可以使用
$.getJSON(…
不仅仅是包含它的函数来添加整个代码?您好,谢谢,但这仍然不起作用,视图无法加载。还有其他建议吗?