Javascript 在JSON中列出对象的最佳方式?

Javascript 在JSON中列出对象的最佳方式?,javascript,json,Javascript,Json,我正在努力弄清楚我在JSON中列出对象的方法是否正确/有效。我正在创建一个API,它将允许用户以各种方式搜索引擎并获取有关它们的信息。所以每个“引擎”对象都有几个键/值对,每个“引擎”都是不同的。我目前的格式是: { "engines": [ { "name": "Ford Modular Engine 3-valve", "maker": "Ford", "cam": "SOHC"

我正在努力弄清楚我在JSON中列出对象的方法是否正确/有效。我正在创建一个API,它将允许用户以各种方式搜索引擎并获取有关它们的信息。所以每个“引擎”对象都有几个键/值对,每个“引擎”都是不同的。我目前的格式是:

{
    "engines": [
        {
            "name": "Ford Modular Engine 3-valve",
            "maker": "Ford",
            "cam": "SOHC"
        },
        {
            "name": "LS6",
            "maker": "Chevy",
            "cam": "OHV"
        }
    ]
}
我对这种格式的关注是访问一个特定的引擎,因为它隐藏在一个数组下

我的另一个格式想法是这样的(但我不确定这是否是JSON对象的“正确”语法)


这些差异是否归结为个人偏好?行业标准是什么?

在大多数情况下,选项将满足您的要求。最好使用以下格式,因为如果您想在html中重复列表,这将很容易

{
    "engines": [
        {
            "name": "Ford Modular Engine 3-valve",
            "maker": "Ford",
            "cam": "SOHC"
        },
        {
            "name": "LS6",
            "maker": "Chevy",
            "cam": "OHV"
        }
    ]
}

在最大情况下,选项将满足您的要求。最好使用以下格式,因为如果您想在html中重复列表,这将很容易

{
    "engines": [
        {
            "name": "Ford Modular Engine 3-valve",
            "maker": "Ford",
            "cam": "SOHC"
        },
        {
            "name": "LS6",
            "maker": "Chevy",
            "cam": "OHV"
        }
    ]
}

我会选择第一个选项,因为您的搜索API意味着它将是一个返回的引擎对象列表。对于JSON,我倾向于将对象视为已知属性的键值对,因此在列表上迭代并知道如何查找这些对象上的属性以进行任何过滤更为简单


由于不知道您编写此API的具体情况,我不相信消费者知道通过您在第二个示例中提供的键/属性来查找特定引擎,特别是如果它只是复制对象中已经存在的字段(名称)。

我选择第一个选项,因为您的搜索API暗示它将是返回的引擎对象列表。对于JSON,我倾向于将对象视为已知属性的键值对,因此在列表上迭代并知道如何查找这些对象上的属性以进行任何过滤更为简单


由于不知道您编写此API的具体情况,我不相信消费者会根据您在第二个示例中提供的键/属性来查找特定的引擎,特别是如果它只是复制对象中已经存在的字段(名称)。

如果您有一个类似对象的列表(相同类型,例如引擎),然后,按照惯例,您将使用一个列表,即数组。您以何种方式担心这些数据会以某种方式被“隐藏”?JSON数据有多大?在我看来,它们都是可以的,您选择的最有趣的参数是您希望如何使用这个对象。你会重复它们吗?这里第一个是合适的,第二个是你会在一个特定的键上搜索一个引擎还是排除一些,最后一个可能是最有趣的。作为一个想法,也许这个问题应该发布在代码审查上?在这种情况下,可以使用@DoubleElite两者。但我知道你不清楚的是什么,让我们想象你列出了你所有的汽车引擎,每辆车都有一个链接到它的特定表格。在每个
标签上存储
数据索引
,比如说
数据索引=“ford3v”
,并将名称显示为链接会更容易。它将允许您仅通过此索引,
引擎[“ford3v”]
直接进入您的ford3v数据。如果您使用了第一个,您将有义务比较您的
名称
属性,这将有更多的时间继续。我同意你的问题吗?@DoubleElite从两个方面来说,你都可以在
maker
上搜索并获得所有这些事件,改变的只是运行对象的方式,没有太大的变化。如果你有一个类似对象的列表(相同类型,如引擎),然后,按照惯例,您将使用一个列表,即数组。您以何种方式担心这些数据会以某种方式被“隐藏”?JSON数据有多大?在我看来,它们都是可以的,您选择的最有趣的参数是您希望如何使用这个对象。你会重复它们吗?这里第一个是合适的,第二个是你会在一个特定的键上搜索一个引擎还是排除一些,最后一个可能是最有趣的。作为一个想法,也许这个问题应该发布在代码审查上?在这种情况下,可以使用@DoubleElite两者。但我知道你不清楚的是什么,让我们想象你列出了你所有的汽车引擎,每辆车都有一个链接到它的特定表格。在每个
标签上存储
数据索引
,比如说
数据索引=“ford3v”
,并将名称显示为链接会更容易。它将允许您仅通过此索引,
引擎[“ford3v”]
直接进入您的ford3v数据。如果您使用了第一个,您将有义务比较您的
名称
属性,这将有更多的时间继续。我同意你的问题吗?@DoubleElite两种方式你都可以在
maker
上搜索并获得所有这些事件,改变的只是运行对象的方式,没有太多变化。因此,如果我希望API消费者通过“maker”进行搜索,那么第一种方式会起作用然后我可以循环我的数组并返回所有引擎,这些引擎的“maker”类型和消费者的请求相匹配。如何处理API请求和如何格式化要返回的数据是不同的问题。这更能回答您的处理问题,但取决于数组的规模,然后对每个请求/查询执行完整的数组迭代可能不可行。关于处理我的数据与格式化,谢谢。搜索API将根据消费者对特定“标记”或“cam”的查询返回引擎列表。但是,如果我使用第一种或第二种方法似乎并不重要,因为我仍然需要循环每个引擎以根据这些属性进行过滤。第二种方法的好处是,如果我想找到一个特定的引擎,我可以通过na引用它