如何为数据选择json结构?

时间:2014-02-23 16:51:11

标签: javascript jquery json

在这种情况下,第一个变量始终是ID,第二个变量始终是OCR编号,第三个数字始终是金额。那么以这种方式做任何事都会有所不同:

{
    "Transactions": [
        "23/2/2014 @ 16:48:8",
        [
            [
                "ID",
                "1"
            ],
            [
                "OCR",
                "123456789"
            ],
            [
                "Amount",
                "100"
            ]
        ],
        [
            [
                "ID",
                "2"
            ],
            [
                "OCR",
                "987654321"
            ],
            [
                "Amount",
                "20"
            ]
        ]
    ]
}

或只有输入数据的等效输入,因为我们知道不同值的索引是相同的:

{
    "Transactions": [
        "23/2/2014 @ 16:48:8",
        [
            [
                "1"
            ],
            [
                "123456789"
            ],
            [
                "100"
            ]
        ],
        [
            [
                "2"
            ],
            [
                "987654321"
            ],
            [
                "20"
            ]
        ]
    ]
}

甚至更简单:

{
    "Transactions": [
        "23/2/2014 @ 16:48:8",
        [
            "1",
            "123456789",
            "100"
        ],
        [
            "2",
            "987654321",
            "20"
        ]
    ]
}

或最低限度:

{
    "23/2/2014 @ 16:48:8": [
        [
            "1",
            "123456789",
            "100"
        ],
        [
            "2",
            "987654321",
            "20"
        ]
    ]
}

但我不认为以下是好的风格,即使它知道哪个元素是哪个并且只是发布一个数组也会有效:

{
    "23/2/2014 @ 16:48:8": [
        123456789,
        100,
        987654321,
        20
    ]
}

或者只是一个数组(也是有效的json并包含我们需要知道的所有内容):

[
    123456789,
    100,
    987654321,
    20
]

尽管所有的exampled看起来都是有效的json,但最好是向任何一个方向前进,或者是一个可读性较低且仅仅是一个数组的结构,或者是一个命名且更复杂但更易读的结构即使数字可以表示它的时间,也可能最好将其存储为字符串,类似于标记某些数据。

在我的上一个示例中,您必须知道每个第二个元素都是一个金额,而每个其他元素都是一个OCR参考。

还有一个有效的json替代方案:

{
    "23/2/2014 @ 16:48:8": [
        [
            {
                "OCR": 123456789
            },
            {
                "Amount": 100
            }
        ],
        [
            {
                "OCR": 987654321
            },
            {
                "Amount": 200
            }
        ]
    ]
}

所以我不确定如何表示元素和列表。

2 个答案:

答案 0 :(得分:3)

最佳格式实际上取决于您希望如何使用数据。但是,通常我认为这样的数据是对象的集合,其中每个事务都是具有属性的对象。在这种情况下,像一系列交易之类的东西是有道理的:

{
    "Transactions": [
        {
            "time": "23/2/2014 @ 16:48:8",
            "id": "1",
            "ocr": "123456789",
            "amount": "100"
        },
        {
            "time": "23/2/2014 @ 16:48:8",
            "id": "2",
            "ocr": "987654321",
            "amount": "200"
        }
    ]
}

这使您可以遍历事务,然后访问每个事务的每个属性。

答案 1 :(得分:2)

只有你可以决定它到底应该是什么样子,但这里有几条建议......

远离使用数据作为键......

{
    "23/2/2014 @ 16:48:8": []
}

而是做这样的事......

{
    "timestamp": "23/2/2014 @ 16:48:8",
    "data": []
}

你对数组的使用似乎更适合作为对象。以下是我认为可接受的表示形式的一个例子......

{
    "transactions": [
        { "id": 1, "timestamp": "23/2/2014 @ 16:48:8", "ocr": 12345678, "amount": 500 },
        { "id": 2, "timestamp": "23/2/2014 @ 16:48:9", "ocr": 345435, "amount": 200}
    ]
}