Angular POST方法只发送JSON数组

Angular POST方法只发送JSON数组,json,angular,post,angular-httpclient,Json,Angular,Post,Angular Httpclient,我有一个与SpringRESTAPI通信的有角度的前端。Spring端点需要一个JSON数组,但对于HttpClient-POST方法,我不知道如何只发送JSON数组。现在我得到HTTP错误代码400(错误请求) 我需要发送到端点的内容(已在API测试仪中测试并运行): 我现在发送更改的方式: modifyElements(id: number, elements: Element[]): Observable<Element[]> { return this.http.post

我有一个与SpringRESTAPI通信的有角度的前端。Spring端点需要一个JSON数组,但对于HttpClient-POST方法,我不知道如何只发送JSON数组。现在我得到HTTP错误代码400(错误请求)

我需要发送到端点的内容(已在API测试仪中测试并运行):

我现在发送更改的方式:

modifyElements(id: number, elements: Element[]): Observable<Element[]> {
  return this.http.post<Element[]>(this.baseUrl + '/modify/' + id, elements);
}
我也尝试过并且更接近我所需要的:

this.http.post<Element[]>(this.baseUrl + '/modify/' + id, {elements: elements});
这仍然不被API接受,导致相同的错误

请帮助我如何以正确的结构发送数据,只发送JSON数组

我已经知道如何在Spring中解决这个问题:在控制器方法中,需要一个新类的请求体,该类只有一个成员是集合,但这不是一个好的解决方案

我想知道,在没有解决办法的情况下,在角度方面,如何做到这一点

编辑

感谢您提供了到目前为止的答案,但它们返回的数组与我的相同,结构也相同。 我在问题中插入的数据结构是Angular的HttpClient从ChromeDevTools复制而来的请求主体。 我认为问题不在于我原来的数组,而在于HttpClient如何创建它发送的JSON。 在我看来,它无法将数组解释为简单的JSON数组,只能将JSON数组作为键值对发送,值就是JSON数组。 我需要的是去掉密钥,只发送普通值。 问题是,HttpClient能做到这一点吗?使用这个片段

modifyElements(id: number, elements: Element[]): Observable<Element[]> {
  const elementsArray = Object.assign([], elements);
  return this.http.post<Element[]>(this.baseUrl + '/modify/' + id, elementsArray );
}
使用这个片段

modifyElements(id: number, elements: Element[]): Observable<Element[]> {
  const elementsArray = Object.assign([], elements);
  return this.http.post<Element[]>(this.baseUrl + '/modify/' + id, elementsArray );
}

正如我看到的对象类型[key:value],key是索引,value是元素实体。您必须从该对象中提取值,然后将其发送到服务器

Object.values(elements) //send this

正如我看到的对象类型[key:value],key是索引,value是元素实体。您必须从该对象中提取值,然后将其发送到服务器

Object.values(elements) //send this

谢谢您的回答,但您的建议返回的数组与我的相同,结构也相同。我的对象类型不是[key:value],它是一个简单数组。我在原来的问题中添加了澄清。谢谢你的回答,但你的建议返回的数组与我的相同,结构也相同。我的对象类型不是[key:value],它是一个简单数组。我在原来的问题中添加了澄清。谢谢你的回答,但你的建议返回的数组与我的相同,结构也相同。我在原来的问题中添加了澄清。谢谢你的回答,但你的建议返回的数组与我的相同,结构也相同。我在原来的问题中补充了澄清。
Object.values(elements) //send this