Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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 ServerResponse.BodyBuilder中elementClass参数的用途是什么?_Java_Spring_Jackson_Reactive Programming_Spring Webflux - Fatal编程技术网

Java ServerResponse.BodyBuilder中elementClass参数的用途是什么?

Java ServerResponse.BodyBuilder中elementClass参数的用途是什么?,java,spring,jackson,reactive-programming,spring-webflux,Java,Spring,Jackson,Reactive Programming,Spring Webflux,有一个简单的模型类,应该用于响应体序列化: public class MyModel{ public String name; } 在任意Spring 5处理程序函数中使用它: public Mono<ServerResponse> getSometing(ServerRequest request) { MyModel model = new MyModel(); model.name = "abc"; return ServerRespon

有一个简单的模型类,应该用于响应体序列化:

public class MyModel{
  public String name;
}
在任意Spring 5处理程序函数中使用它:

public Mono<ServerResponse> getSometing(ServerRequest request) {
  MyModel model = new MyModel();
  model.name = "abc";

  return ServerResponse.ok().body(Mono.just(model), %anyClass%);
}
公共Mono getSometing(服务器请求){ MyModel model=新的MyModel(); model.name=“abc”; 返回ServerResponse.ok().body(Mono.just(model),%anyClass%); } 我试图替换不同的类:
对象
字符串
我的模型
运行时异常
,结果总是一样的。每次将模型实例序列化为json
{“name”:“abc”}

它还适用于具有嵌套对象和数组的更复杂模型


如果第二个参数(
elementClass
)不影响结果,请说明它的用途是什么?为什么我们不能总是使用
Object.class

它不是任何类,它通常是您想要发布/生成的类的类型。在您的情况下,它可以是MyModel.class,即您在响应中发送的

如果您阅读spring文档,它将对您更有意义。

您可以更新代码的最后一行:
ServerResponse.ok().body(Mono.just(model),MyModel.class)

它不是任何类,通常是您要发布/生成的类的类型。在您的情况下,它可以是MyModel.class,即您在响应中发送的

如果您阅读spring文档,它将对您更有意义。

您可以更新代码的最后一行:
ServerResponse.ok().body(Mono.just(model),MyModel.class)

我希望
body()
方法的所有参数都会影响其结果。如果在我提供
MyModel.class
Object.class
时没有区别,那么甚至需要这个参数的目的是什么?只要看看源代码,它最终会在
org\springframework\http\codec\json\AbstractJackson2Encoder.java
中使用,因此,如果你的类有一个自定义序列化程序,你可以传递你想要序列化的类。事实上,有些奇怪的事情发生了,它总是被设置为
class.java.lang.object
。@123尝试
URI.class
作为
%anyClass%
的占位符来查看不同的编码行为。是的,忽略我的第二条评论,这是因为另外一个原因,
body()
方法的所有参数都会影响其结果。如果在我提供
MyModel.class
Object.class
时没有区别,那么甚至需要这个参数的目的是什么?只要看看源代码,它最终会在
org\springframework\http\codec\json\AbstractJackson2Encoder.java
中使用,因此,如果你的类有一个自定义序列化程序,你可以传递你想要序列化的类。事实上,有些奇怪的事情发生了,它总是被设置为
class.java.lang.object
。@123尝试
URI.class
作为
%anyClass%
的占位符来查看不同的编码行为。是的,忽略我的第二条评论,那是因为别的原因我想你没抓住重点。是的,文档中写的是预期的行为。出乎意料的是,我发现即使我违反了方法的约定,序列化也可以正常工作。你不感到惊讶吗?我想,你没有抓住重点。是的,文档中写的是预期的行为。出乎意料的是,我发现即使我违反了方法的约定,序列化也可以正常工作。你不感到惊讶吗?