json传递对象时时间格式报错

JSON parse error: Cannot deserialize value of type `java.util.Date` from String \"2022-10-24 09:57:07\": expected format \"yyyy-MM-dd HH:mm:ss\"; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String \"2022-10-24 09:57:07\": expected format \"yyyy-MM-dd HH:mm:ss\"\n at [Source: (PushbackInputStream); line: 1, column: 58] (through reference chain: org.springblade.wisdom_elevator.encity.Monitoring[\"createTime\"])"

此报错,尝试了好多注解之类的,但是没有用,根本原因是我当时比较懒将获取到的json对象数据放到了微信中,虽然没有发送出去,但这段json在格式上已经变了好多。好像连时间格式也发生了变化,就连里面的空格都出现了异常。

空格异常报了这个错:

"msg": "JSON parse error: Unexpected character (' ' (code 160)): was expecting double-quote to start field name; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character (' ' (code 160)): was expecting double-quote to start field name\n at [Source: (PushbackInputStream); line: 1, column: 4]"

结论是:数据一定不要放到微信中。格式有可能发生变化。即使你没有发送出去。要放就放在记事本中。

在Java后端开发中,如果直接尝试将前端传递过来的JSON字符串解析为Java对象,而该字符串格式有误或不符合预期的模式,可能会导致`org.json.JSONObject`或`com.fasterxml.jackson.databind.JsonMappingException`等异常。为了避免这类错误,你可以采用以下步骤处理: 1. **使用`try-catch`块**: 使用`try-catch`来捕获可能出现的异常,例如`JsonParseException`。 ```java String jsonString = request.getParameter("yourJsonParam"); // 获取前端传递JSON字符串 JSONObject jsonObject; try { jsonObject = new JSONObject(jsonString); } catch (JSONException e) { // 处理解析失败的情况 log.error("Failed to parse JSON string", e); // 可能返回错误响应或者抛出异常 throw new IllegalArgumentException("Invalid JSON format"); } ``` 2. **使用第三方库(如Jackson或Gson)**: 如果你在项目中已经引入了如Jackson或Gson这样的库,可以利用它们更安全地解析JSON。例如,Jackson: ```java ObjectMapper mapper = new ObjectMapper(); YourJavaClass yourObj; try { yourObj = mapper.readValue(jsonString, YourJavaClass.class); } catch (IOException e) { // 同样处理异常 log.error("Failed to deserialize JSON", e); } ``` 这里的`YourJavaClass`是你要解析的目标Java类。 3. **验证JSON结构**: 在解析之前,可以使用`org.jsonschema2pojo`等工具生成Java对象对应的JSON Schema,然后检查前端传来的数据是否符合这个Schema。 无论哪种方式,记得在`catch`块中处理异常并提供有用的反馈给前端,以便他们了解问题所在,并相应地调整发送的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值