将javascript数组放入具有相同键名的对象中
我有一个不寻常的问题要解决。我有一个guid数组将javascript数组放入具有相同键名的对象中,javascript,arrays,Javascript,Arrays,我有一个不寻常的问题要解决。我有一个guid数组 [ "c01f8237-72c8-4fa6-9c53-1915750385aa", "2c8a471b-c408-436c-81b1-3f3867d8ffb4", "27a44d46-12bd-4784-ceed-57ada31b0e33" ] 此阵列必须转换为: { id: "c01f8237-72c8-4fa6-9c53-1915750385aa", id: "2c8a471b-c408-436c-81b1
[
"c01f8237-72c8-4fa6-9c53-1915750385aa",
"2c8a471b-c408-436c-81b1-3f3867d8ffb4",
"27a44d46-12bd-4784-ceed-57ada31b0e33"
]
此阵列必须转换为:
{
id: "c01f8237-72c8-4fa6-9c53-1915750385aa",
id: "2c8a471b-c408-436c-81b1-3f3867d8ffb4",
id: "27a44d46-12bd-4784-ceed-57ada31b0e33"
}
我知道不应该这样做,但不幸的是无法控制后端部分。有什么想法吗
感谢字典键的全部意义在于它唯一地映射到某个值。您想要的输出试图复制一个键,因此既不可能也没有意义
如果您按照您的建议将其传递到后端,那么当然可以手动构建一个字符串,通过复制有效负载中的键的线路传递,但是您无法首先在JavaScript中实际执行此操作。您必须手动生成字符串
还请注意,您可以随意调用此格式,但不能将其称为JSON,也不能使用JSON库来构建它,因为它不是JSON。如果您的API需要自定义格式,那么您需要编写代码来构建该自定义格式。字典键的关键在于它唯一地映射到某个值。您想要的输出试图复制一个键,因此既不可能也没有意义
如果您按照您的建议将其传递到后端,那么当然可以手动构建一个字符串,通过复制有效负载中的键的线路传递,但是您无法首先在JavaScript中实际执行此操作。您必须手动生成字符串
还请注意,您可以随意调用此格式,但不能将其称为JSON,也不能使用JSON库来构建它,因为它不是JSON。如果您的API需要自定义格式,那么您需要编写代码来构建该自定义格式。如果您只需要一个字符串,请执行以下操作
var str = '{' + idArray.map(function(id) {
return "id: "+id
}).join(',\n')+'}';
我不知道你会用什么mime类型,因为它不是有效的JSON
var str = '{' + idArray.map(function(id) {
return "id: "+id
}).join(',\n')+'}';
我不知道你会使用什么mime类型,因为它不是有效的JSON。同一个键不能存在于对象中,我非常清楚这一点。但正如我在问题中所说的,不幸的是,接收对象的后端没有以标准方式构建,我无法更改它。@Mauro74他的意思是,在javascript中这是不可能的。然而,您的后端到底期望什么?后端需要序列化格式,而不是javascript。以上内容不是有效的JSON,不需要JSON吗?因此您不希望将其转换为对象,而是序列化为该形式的字符串。如果是这样的话,这似乎是一项非常简单的任务。问题是什么?听起来后端并不是真的需要JSON,但实际上只是使用了一些简单的东西,比如String.split来构建一个数组,然后循环。如果是这样的话,你就无法使用字符串连接来构建输入。我非常清楚,同一个键在对象中不可能存在。但正如我在问题中所说的,不幸的是,接收对象的后端没有以标准方式构建,我无法更改它。@Mauro74他的意思是,在javascript中这是不可能的。然而,您的后端到底期望什么?后端需要序列化格式,而不是javascript。以上内容不是有效的JSON,不需要JSON吗?因此您不希望将其转换为对象,而是序列化为该形式的字符串。如果是这样的话,这似乎是一项非常简单的任务。问题是什么?听起来后端并不是真的需要JSON,但实际上只是使用了一些简单的东西,比如String.split来构建一个数组,然后循环。如果是这样的话,你就不得不使用字符串连接来构建输入。我很清楚这一点。但正如我在问题中所说,不幸的是,接收对象的后端没有以标准方式构建,我无法对其进行更改。如果要将其传递到后端,那么当然可以手动构建一个字符串,通过复制JSON有效负载中键的连线传递,但你不可能先用JavaScript来实现,我很清楚这一点。但正如我在问题中所说,不幸的是,接收对象的后端没有以标准方式构建,我无法对其进行更改。如果要将其传递到后端,那么当然可以手动构建一个字符串,通过复制JSON有效负载中键的连线传递,但您不能首先在JavaScript中实际执行此操作。或者:str='{id:'+idArray.join',id:'+'}'可能只是文本/纯MIME。您在结果中缺少了id周围的引号。这回答了这个问题,可能是非理性的,也可能只是:str='{id:'+idArray.join',id:'+'}'可能只是文本/纯MIME。结果中缺少了ID周围的引号。这回答了这个问题,可能是不理智的