【问题标题】:How to handle common nested data in JSON? Which structure is best?如何处理 JSON 中常见的嵌套数据?哪种结构最好?
【发布时间】:2021-10-04 02:46:59
【问题描述】:

我基本上有一个带有属性的对象数组(例如,shirtSize.和 shirtSize 可以有 M、L、XL 之类的值)。我的客户(前端)正在使用此响应,并希望将此列表显示为带有标签(= shirtSize)的行项目。在前端,每​​个行项目上都有一个图标,点击它会显示精确的尺寸(如高度、宽度等)。

注意:请假设这些尺寸(L、XL、X)是所有品牌中唯一可用的尺寸,并且它们在所有品牌中具有相同的尺寸。

为了实现这一点,我有两种 JSON 类型的结构,但很困惑选择哪一种。

结构1:

{
    "data": [
        {
            "brand": "queen",
            "color": "black",
            "size": "X",
            "height: 24,
            "breadth": 35
        },
        {
            "brand": "jack",
            "color": "green",
            "size": "L",
            "height: 22,
            "breadth": 30
        },
        {
            "brand": "yeo",
            "color": "blue",
            "size": "XL",
            "height: 29,
            "breadth": 39
        },
        {
            "brand": "tero",
            "color": "pink",
            "size": "L",
            "height: 22,
            "breadth": 30
        },
        ... // more objects
    ]
}

结构2:

{
    "size": {
        "X": {
            "height": 24,
            "breadth": 35
        },
        "L": {
            "height: 22,
            "breadth": 30
        },
        "XL": {
            "height: 29,
            "breadth": 39
        }
    }
    "data": [
        {
            "brand": "queen",
            "color": "black",
            "size": "X",

        },
        {
            "brand": "jack",
            "color": "green",
            "size": "L",

        },
        {
            "brand": "yeo",
            "color": "blue",
            "size": "XL",

        },
        {
            "brand": "tero",
            "color": "pink",
            "size": "L",

        },
        ... // more objects
    ]
}

分享您对哪种结构更好以及为什么更好的想法

【问题讨论】:

    标签: json api rest api-design


    【解决方案1】:

    第一个

    在第二个中,您假设每个品牌的尺寸相同。 A 品牌的 L 与 B 品牌的 L 可能完全不同。即使是同一个品牌,衣服也可能完全不同。

    如果您不想管理每个商品尺寸(以节省一些网络),我至少会通过指定品牌(L,品牌 A => x,y | L,品牌 B = > x1, y1 | ....)

    【讨论】:

    • 请假设这些尺寸(即 L、XL、X)是所有品牌中唯一可用的尺寸,并且它们在所有品牌中具有相同的尺寸。例如,我只是将键名保留为品牌,以填充数据。 PS:我已经用上述假设更新了问题
    【解决方案2】:

    第二个。

    这是因为结构良好,没有不必要的数据,您可以通过将 Size 解析为主要对象并添加合乎逻辑的高度和宽度来减少不必要的数据。

    【讨论】:

      【解决方案3】:

      我认为您的响应必须是在正面需要较少转换的响应。调整它以尽可能容易地理解它。另一方面,我更喜欢第二个,因为你不重复数据,传输数据更小,可读性更好。

      【讨论】:

        猜你喜欢
        • 2013-11-23
        • 2022-07-13
        • 2010-12-29
        • 2015-01-15
        • 2012-02-16
        • 1970-01-01
        • 2011-04-08
        • 1970-01-01
        • 2012-04-22
        相关资源
        最近更新 更多