gpt4 book ai didi

java - 如何从 START_OBJECT token 中反序列化 java.lang.String 实例

转载 作者:行者123 更新时间:2023-12-02 01:45:19 24 4
gpt4 key购买 nike

我有一个 json:

{
"clientId": "1",
"appName": "My Application",
"body": "Message body",
"title": "Title"
"data": {
"key1": "value1",
"key2": "value2"
}
}

还有一个 DTO:

@Data
public class PushNotificationDto {
private Long clientId;
private String appName;
private String body;
private String title;
private String data;
}

我正在使用 SpringBoot,我的 @RestController 如下所示:

@RestController
@AllArgsConstructor
public class PushNotificationController {

private PushNotificationService pushNotificationService;

@PostMapping("/push-notification")
void sendPushNotification(@RequestBody PushNotificationDto pushNotification) {
pushNotificationService.send(pushNotification);
}
}

由于 json 对象中的数据字段实际上是一个对象,但在我的 DTO 中它是一个字符串,所以我得到一个异常:

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: 
Can not deserialize instance of java.lang.String out of START_OBJECT token;
nested exception is com.fasterxml.jackson.databind.JsonMappingException:
Can not deserialize instance of java.lang.String out of START_OBJECT token

我该怎么做才能成功执行此类反序列化?

最佳答案

在您的请求对象中,您有一个 data 数组。

"data": {
"key1": "value1",
"key2": "value2"
}

但是在你的 PushNotificationDto 中你拥有的对象String data 。这就是您收到此错误的原因。要解决此错误,您可以更改 String dataMap<String,String>

关于java - 如何从 START_OBJECT token 中反序列化 java.lang.String 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53747109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com