作者:
Rushia (みけねこ的鼻屎)
2022-10-26 10:48:46※ 引述《SuicideComet (|)》之銘言:
: 我我剛接到一個問題
: 如果今天訂的json有數字
: 然後接到空字串
: 那在java這邊可不可以不報錯
: 而是轉成0
: number: int
: 但是今天丟
: {number:""}
: 要不報錯變成
: int number = 0
: 這樣
: 這可能嗎
: 然後一般會這樣作嗎
: 我主管是說要減少錯誤可能
: 我覺得想跑
:
可以自定義反序列化規則,大概像下面這樣吧
@RequestMapping("/api")
public class TestController {
@PostMapping("/test")
public Object test(@RequestBody People people) throws
JsonProcessingException {
return people;
}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonComponent
class People{
String name;
Integer age;
static class PeopleDeserializer extends StdDeserializer<People> {
public PeopleDeserializer() {this(null);}
public PeopleDeserializer(Class<?> vc) {super(vc);}
@Override
public People deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException {
JsonNode node = jp.getCodec().readTree(jp);
Integer age = node.get("age").numberValue() == null ? 0 :
node.get("age").asInt();
String name = node.get("name").asText().toUpperCase();
return new People(name, age);
}
}
}
age收到空字串自動填充0否則parse