用JSON表示类

时间:2017-06-05 15:37:20

标签: arrays json categories

我尝试将事务类实现为JSON文件。对于一个例子......

Holidays [Flights, Hotels, etc.]
Groceries [Drinks, Food]
Transportation [Car Taxes, Car Insurance, rental car, petrol]

我将如何设法这样做?

我可以定义两个类并用ID链接它们吗?

   categoryList: [
        {
            name: 'Holidays',
            id: 1000
        },  {
            name: 'Groceries',
            id: 1001
        },  {
            name: 'Transportation',
            id: 1002
        }
    ],
    subCategoryList: [
        {
            name: 'Flights',
            categoryId: 1000
        },  {
            name: 'Hotels',
            categoryId: 1000
        },  {
            name: 'Drinks',
            categoryId: 1001
        }, {
            name: 'Food',
            categoryId: 1001
        }, {
            name: 'Car Taxes',
            categoryId: 1002
        }, {
            name: 'Car Insurance',
            categoryId: 1002
        }, {
            name: 'Rental Car',
            categoryId: 1002
        }
    ]

我已进行银行交易,并希望按照我的应用中的类别对其进行分类。

1 个答案:

答案 0 :(得分:1)

我假设您在JavaScript中思考,并且...... 是!你可以!

我认为最好的方法是在每个对象中使用子元素创建一个数组:

   categoryList: [
        {
            name: 'Holidays',
            subelements: ['Flights', 'Hotels']
        },  {
            name: 'Groceries',
            subelements: ['Drinks', 'Foods']
        },  {
            name: 'Transportation',
            subelements: ['Car Taxes', 'Rent a Car']
        }
    ],

此外,如果您想要详细的子元素,您可以创建一个对象数组而不是字符串数组:

   categoryList: [
        {
            name: 'Holidays',
            subelements:  [{
                name: 'Flights',
                optional: false 
            },  {
                name: 'Hotels',
                optional: true 
            }]
        }, ... ]

但是,如果您将重复子元素,则只需要识别一个属性,例如名称或ID以及数组中的搜索详细信息,以获取详细的子元素。

我假设您在JavaScript中思考,并且...... 是!你可以!

我认为最好的方法是在每个对象中使用子元素创建一个数组:

categoryList: [
    {
        name: 'Holidays',
        subelements: ['Flights', 'Hotels']
    },  {
        name: 'Groceries',
        subelements: ['Drinks', 'Foods']
    },  {
        name: 'Transportation',
        subelements: ['Car Taxes', 'Rent a Car']
    }
 ],

此外,如果您想要详细的子元素,您可以创建一个对象数组而不是字符串数组:

categoryList: [
        {
            name: 'Holidays',
            subelements:  [{
                name: 'Flights',
                optional: false 
            },  {
                name: 'Hotels',
                optional: true 
            }]
        }, ... ]

但是,如果您将重复子元素,则只需要识别一个属性,例如名称或ID以及数组中的搜索详细信息,以获取详细的子元素。

替代解决方案

而且,我认为最简单的方法是更改​​categoryList数组:

categoryList: [ 'Holidays', 'Groceries', 'Transportation' ]

现在你有了一个自动编号的数组,所以:0 - >假期1 - >杂货2 - >运输

然后,您必须更改subCategoryList:

subCategoryList: [
    {
        categoryId: 0, name: 'Flights' }, {
        categoryId: 0, name: 'Hotels' }, {
        categoryId: 1, name: 'Drinks' }, {
        categoryId: 1, name: 'Food' }, {
        categoryId: 2, name: 'Car Taxes' }, {
        categoryId: 2, name: 'Car Insurance' }, {
        categoryId: 2, name: 'Rental Car' }
]

现在,每次需要类别名称时都会转到数组,例如:

for(var i=0 ; i < subCategoryList; i++){
    console.log('for ' + subCategoryList[i].name + ', category is: '
    + categoryList[ subCategoryList[i].categoryId ] );
}