从 Java 脚本发送的 JSON 数据与在 Java Quarkus 服务中收到的 JSON 输入不同

The JSON data sent from Javascript is different than the JSON input received in Java Quarkus Service

我正在使用 Vuejs/Nuxtjs 开发一个简单的 Web 应用程序,它使用 Axios POST requestJava Quarkus Service 进行后端调用。在 POST request 中,我正在发送 JSON 数据。

我面临的问题是我发送的 JSON 数据与我在 Java Quarkus Service.

中接收的数据有点不同

我在将 JSON 数据发送到 Java 服务之前放置了一个 console.log,数据看起来像这样:

{
  "person": {
    "name": "abcd"
  },
  "animal": {
    "name": "xyz"
  }
}

我在开头放了一个 System.out Java Service,我收到的数据看起来像这样:

{
  "inputTemplate": {
    "person": {
      "name": "abcd"
    },
    "animal": {
      "name": "xyz"
    }
  }
}

正如我们所见,inputTemplate key 已添加,但 JavaScript 中没有出现。不知道为什么。

以下是来自 Vuejs Axios 的调用,此处 console.log 工作正常,inputTemplate key 未如上文 JSON 所述出现。

const headers = { 'Content-Type': 'application/json' }
const person = { name: 'abcd' }
const animal = { name: 'xyz' }
const inputTemplate = { person, animal}

console.log(JSON.stringify(inputTemplate, null, 4))

this.$axios.post('/generateTestData', { inputTemplate }, { headers })
  .then((response) => {
    console.log('Response : ' + JSON.stringify(response.data, undefined, '\t'))
  })
  .catch((error) => {
    console.log('Error : ' + ' Unable to obtain data, Error : ' + error)
  })

以下是 Java Quarkus service 我得到额外的 inputTemplate key:


  public class TestDataGeneratorResource {
    @POST
    @Path("/generateTestData")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public String generateTestData(String inputTemplate) {
        System.out.println(inputTemplate);
    }
}

有人可以告诉我如何避免在 Java Service 中出现 inputTemplate 吗?

使用扩展运算符传递对象:this.$axios.post('/generateTestData', { ...inputTemplate }, { headers })