Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该在请求中处理意外的json字段吗?_Java_Json_Spring Boot_Validation_Spring Data Jpa - Fatal编程技术网

Java 我应该在请求中处理意外的json字段吗?

Java 我应该在请求中处理意外的json字段吗?,java,json,spring-boot,validation,spring-data-jpa,Java,Json,Spring Boot,Validation,Spring Data Jpa,我应该在请求中处理意外的json字段吗?假设我已获得paymentDTO作为控制器的输入 public class PaymentDTO { private String fromAccountNumber; private String toAccountNumber; private BigDecimal amount; ... constructor ... getters ... setters } 作为请求,我希望: { "fromAccount

我应该在请求中处理意外的json字段吗?假设我已获得paymentDTO作为控制器的输入

public class PaymentDTO {
    private String fromAccountNumber;
    private String toAccountNumber;
    private BigDecimal amount;

... constructor
... getters 
... setters
}
作为请求,我希望:

{
"fromAccountNumber": "1",
"toAccountNumber": "2",
"amount": 50.0
}
如果用户发布如下请求,该怎么办:

{
"fromAccountNumber": "1",
"toAccountNumber": "2",
"amount": 50.0,
"customField1": 100,
"anotherField2: "data"
}

它会导致我的Spring Boot控制器出现任何问题吗?如果是,我应该如何处理意外的json请求字段?

如果您使用springboot,请在
应用程序中添加此行。属性文件将忽略未知属性:

spring.jackson.deserialization.fail-on-unknown-properties=false

我的建议是在不匹配的属性上失败(即400个错误请求,而不是500个)。这样,客户的错误会很快变得明显。

这是否回答了您的问题?OP不是问如何全局配置它,而是问它可能有什么影响。@fluffy,我想最后一个问题是问如何处理未知属性。我给出了一个解决方案:全局忽略它们,这样就不会出现任何错误。Yekta表示控制器可能有问题,因此忽略属性将确保控制器在反序列化bodyI不同意时不会抱怨。这个问题的题目是“我应该……吗?”。。?。所以这听起来更像是一个值得做点什么的问题。接下来,最后一个问题是,它会导致任何问题吗到底是什么样的问题?客户机-服务器协商?安全风险?性能问题?第三个也是最后一个问题是问。。。我应该如何处理意外的JSON。。。?这是在要求忽略字段吗?@flufy,让我问你一个问题。esle如何处理未知的JSON属性?除了忽略他们?我不是问这个问题的人,但标题的意思是:我应该如何处理请求中意外的json字段?这的确是一个好问题,至少还有两个选项:1)未映射属性失败(默认的Jackson行为,对吧?导致HTTP 400错误请求只是拒绝用户输入);2) 在忽略/失败时记录未映射的属性,以便收集有关入站请求的更多信息(AFAIK,而不是Jackson内置)。我相信这取决于特定的应用程序需求,而OP的要求并不明确。如果他们用的是Gson而不是Jackson呢?我宁愿先澄清这个问题。额外的字段意味着您的客户可能会错误地期望该字段的工作方式