在 JSON 中表示 类

Represent Classes in JSON

我尝试将事务 类 实施到 JSON 文件中。举个例子...

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

我该怎么做?

我可以用 ID 定义两个 类 和 link 吗?

   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
        }
    ]

我有银行交易,想在我的应用程序中按类别对它们进行分类。

我假设您在 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: [
    {
        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 ] );
}