Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该返回数组而不是单个值吗?_C#_Json_Rest - Fatal编程技术网

C# 我应该返回数组而不是单个值吗?

C# 我应该返回数组而不是单个值吗?,c#,json,rest,C#,Json,Rest,我们有一个使用REST和JSON与ReactJS前端交互的C#WebAPI。我们偶然发现了这样一种情况:我们需要从服务器向客户端发送大量数据 格式基本上是: [ { id: 1, description: "description for Id 1", parentId: 1 }, { id: 2, description: "description for Id

我们有一个使用REST和JSON与ReactJS前端交互的C#WebAPI。我们偶然发现了这样一种情况:我们需要从服务器向客户端发送大量数据

格式基本上是:

[
    {
        id: 1,
        description: "description for Id 1",
        parentId: 1
    },
    {
        id: 2,
        description: "description for Id 2",
        parentId: 1
    },
    {
        id: 3,
        description: "description for Id 3",
        parentId: 2
    },
   ......
]
我们的前端开发人员试图说服我使用这样的阵列:

[
    [1, 'description for Id 1', 1],
    [2, 'description for Id 2', 1],
    [3, 'description for Id 3', 2],
    ....
]
这当然使JSON更加轻量级,但我认为这是一种不必要的攻击,破坏了格式的逻辑性和描述性

我的问题是:

这是个坏习惯吗?这是否破坏了服务器和客户端之间的“预期”契约?或者这是一种正常的优化实践


注:在写这个问题之前,我怀疑这是否会被作为“主要的基于意见的问题”来解决,但我不相信会是这样。

请记住,除非你真的弄乱了服务器设置,否则数据是通过Gzip发送的。比较这两个(小)样本的gzip格式,差异约为20字节(101字节vs 77字节)


相对而言,它只会变得更小,你拥有的条目越多,因为公共部分保持不变,它们只需要编码一次。

这个问题的一部分会有基于观点的答案,这在堆栈溢出问题上不是很有建设性。回答你的一个问题,它会违反合同吗?好的,这两种json格式定义了完全不同的结构,能够处理第一种格式的客户端不会自动处理第二种格式,反之亦然。我认为您在两个方面是对的-问题将因基于观点而结束,而扁平数组将失去数据含义的上下文。至于“正常优化实践”,是“正常优化实践”的第一步“首先要验证您是否需要优化某些内容,然后衡量您需要优化哪些内容。如果没有确凿的证据表明这可以改善某些东西,我永远不会将结构从具有属性的对象更改为扁平的非结构化数组。如果你所拥有的只是前端开发人员的意见,那么对我来说,这不会减少它。我们在过去遇到过此类优化问题。我们处理它的最初方法是返回分页响应,并允许前端通过查询参数指定某些分页行为(即:每页的帖子数和页码)。我们提供的另一个选项是允许字段过滤,让前端只指定特定请求所需的字段。但我同意上面的观点,你们可能会对此有很多意见。好的,伙计们,谢谢你们的见解。我将在几秒钟内删除这个问题,因为它是基于观点的。谢谢你的见解。事实上,我们正在做出回应。在我对30k对象的测试中,差异是可以忽略的,并且不能弥补格式上的混乱。正是因为如此广泛地使用JSON,密钥名被频繁重用,gzip使它们基本上是免费的!