当前位置: 首页 > 知识库问答 >
问题:

Spring BootREST读取JSON数组有效负载

上官斌
2023-03-14

我有这个邮戳方法

@PostMapping("/offreStage/{id}/users")
public ResponseEntity<?> addAuthorizedStudents(@PathVariable Long id,
                                               @RequestBody Map<String, String> students) {
    return service.addAuthorizedStudentsToOffer(id, students);
}

我使用下面的JSON负载来提出我的帖子请求:

[
    {
        "value": 15,
        "label": "student2@gmail.com"
    },
    {
        "value": 14,
        "label": "student21@gmail.com"
    }
]

这将返回以下内容:

“消息”:“JSON解析错误:无法反序列化java.util.LinkedHashMap超出起始\u数组标记的实例;嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化java.util.LinkedHashMap超出起始\u数组标记的实例\n位于[源:(PushbackInputStream);行:1,列:1]“,

共有3个答案

宦博超
2023-03-14

它不起作用,因为您发送JSON的方式。在您的示例中,您实际上是以Json的形式发送一个映射数组,并期望Spring将其转换为Map。在您的JS中,将结构转换为单个映射,或者您可以使用后端中的对象来相应地映射json中的数据,如:

[
    {
        "value": 15,
        "label": "student2@gmail.com"
    },
    {
        "value": 14,
        "label": "student21@gmail.com"
    }
]

然后你可以使用你的控制器,比如:

@PostMapping("/offreStage/{id}/users")
public ResponseEntity<?> addAuthorizedStudents(@PathVariable Long id,
                                               @RequestBody List<ObjectClass> students) {
    return service.addAuthorizedStudentsToOffer(id, students);
}

你的对象类可以是这样的:

public class ObjectClass {
String value;
String label;
//getters and setters

}
钦德佑
2023-03-14

映射是针对键值对的,您有键值对列表。

更改地图

拓拔烨赫
2023-03-14

发送的正文与函数中的正文不匹配。

更准确地说,这是您的地图:

  {
        "value": 15,
        "label": "student2@gmail.com"
  }

你需要一张地图列表,所以它不起作用。所以应该是这样:List

 类似资料:
  • 当我想从另一个位于不同文件夹(如下所示)的特性文件中调用上述公共特性文件时,它不起作用: src/test/java/feature/tests/test.feat 我尝试了以下方法: 调用读取('feature/common/common.feature'),但它不起作用。

  • 问题内容: 我正在尝试读取JSON数组。这是我的代码。 我的示例JSON文件语法如下所示, 前面有一个大括号。当我尝试执行此代码块时,出现错误提示 JSONArray文本必须在....的字符1处以’[‘开头。 有没有人遇到过这样的问题?任何帮助将不胜感激。如果可以的话,请告诉我一个示例代码块。提前致谢。 问题答案: JSON对象以a开头,以a 结尾,而JSON数组以a开头,以a 结尾。 根据您的情

  • 我在NodeJS中看到过从本地读取JSON文件不同方法。像这样; > 方法 使用fs库 方法 使用require() 方法 使用Ajax请求如何使用Jquery和Ajax从JSON文件中检索数据? 可能还有别的办法。但是我听说使用方法1读取JSON文件比其他方法更有效。

  • 我这里有个小问题。在触发请求时,我希望使用HMAC对整个消息进行签名,并将生成的签名添加到头中。 所以我实施了 在的 方法I无法访问实体的字符串表示形式。它总是返回一个空字符串。原因似乎是在WriterInterceptor之后执行的MessageBodyWriter。 基本上,我有以下两种情况: 在这里,do某位SuffBackPayload(有效载荷)方法不起作用,因为有效载荷总是空的。 我以

  • 如果我创建一个JWT令牌,有效负载中应该有哪些数据?我在网上查找了一些示例和解释,有些人将密码放在JWT中,有些人没有。 现在我正在传递以下数据: 将散列密码放入JWT有效负载感觉不对,因为JWT将被放置在前端应用程序中。它应该在那里吗? 最佳实践是什么?

  • 问题内容: 我希望编写一个提供JSON对象列表的Web服务。返回以下内容的JSON是否有效: 还是将其放在单个对象中以返回的“正确”方法: 问题答案: 两种形式均有效。但是,对于API,我建议使用第二种形式。原因是它为您提供扩展API的途径。 例如,如果您有一个返回用户对象数组的API ,后来又决定要包含一些有关返回用户的汇总统计信息,那么没有不破坏现有客户端(或包括每个用户对象中有很多冗余数据)