我知道< code > mappingpingjacksonhttpmessageconverter 是默认值,但是我得到了
JSON分析错误:无法识别的令牌“Stock”:应为(“true”、“false”或“null”);嵌套异常是com.fasterxml.jackson.core。JsonParseException:无法识别的令牌“Stock”:应为('true'、'false'或'null')
我认为原因可能是< code > mappingmappingjackson 2 HttpMessageConverter无法将JSON数据转换为自定义POJO,我们必须通过< code>@Overide方法< code > extendMessageConverters()添加< code >新的HttpMessageConverter :
/**
* A hook for extending or modifying the list of converters after it has been
* configured. This may be useful for example to allow default converters to
* be registered and then insert a custom converter through this method.
* @param converters the list of configured converters to extend.
* @since 4.1.3
*/
default void extendMessageConverters(List<HttpMessageConverter<?>> converters)
{
}
还是没有必要
我尝试了不同的JSON样式:{“id”:“1”}
,和{“Stock”:{“id):“1”}
。但两者都不起作用。
public class myWebApplication extends AbstractAnnotationConfigDispatcherServletInitializer
{
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] {WebConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
WebConfig(DispatcherServlet):
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"WebBeans"})
public class WebConfig implements WebMvcConfigurer
{
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/jsp/",".jsp");
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
我的POJO:
public class Stock
{
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
$(document).ready(function() {
$("#button2").click(function() {
$.ajax({
url: "http://localhost:8080/getid2?",
data: {
"Stock": {
"id": "" + $("#id").val()
}
},
type: "POST",
contentType: "application/json;charset=UTF-8",
success: function() {
console.log("successful upload!")
},
error: function() {
console.log("err!")
}
});
})
});
我在SpringMVC Doc中找到了这个:
@PostMapping("/accounts")
public void handle(@Valid @RequestBody Account account, BindingResult result)
{
// ...
}
似乎< code>@RequestBody可以将JSON数据转换成POJO,但是它对我不起作用。我在Chrome上得到错误400
请求负载:
Stock%5Bid%5D=4
和
JSON分析错误:无法识别的标记“Stock”:应为(“true”、“false”或“null”);嵌套异常为com . faster XML . Jackson . core . jsonparseexception:无法识别的标记“Stock”:应为(“true”、“false”或“null”)` s
原因是什么?
您正在向后端发送不正确的json:
Stock%5Bid%5D=4
正确的请求正文(由json转换器解析)应该是:
{
"id": "4"
}
我认为解决办法可能是:
$.ajax({
...
data: '{"id": "4"}', // Also will work JSON.stringify({id: "4"})
...
});
问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。
在我的Oracle数据库中,我有存储为VARCHAR的数量值。从数据库中检索记录时,我希望将它们映射到一个POJO,其中金额值表示为double。不幸的是,我不能使用强制类型,因为在数据库中,所有内容都存储为VARCHAR,并且没有模式将列标识为包含金额值的列。 我正在查看jOOQ转换器,这似乎是我想要的。因此,我为此创建了一个jOOQ转换器: 然而,每当我想使用将数据库记录映射到我的POJO时,
我正在尝试在Apache Camel中将一个简单的JSON文件转换为POJO,但我无法让它工作。 路线.java WeatherForecast.java 天气预报json 我收到的错误是:没有可用的主体类型:java.io.输入流,但具有类型:org.acme.bindy.ftp.天气预报[]on:weather.json.由:没有类型转换器可用于从类型:org.acme.bindy.ftp.天
最近,我开始将我的Android项目从Java转换为Kotlin。我在许多类中使用改型从API获取数据。在我的项目中,有很多POJO,我需要手动将它们转换为数据类,因为它与AndroidStudio的自动转换器工具不兼容。 假设我有模型类: 在Kotlin中有没有什么好方法可以直接将这个模型类转换为数据类?这个类可以手动转换,但我有一些类有大量的变量,手动将其转换为数据类会很麻烦。
我在使用spring-jms模块转换来自RabbitMQ的消息时遇到了一些问题。以前,我使用Rest APIendpoint发送消息,该endpoint将消息发送到RabbitMQ队列,并使用@JMSListener方法处理它。 在内部,这种行为添加了一个字段来确定Java类型,由Spring库管理。但是,现在我想避免Rest API调用,因为它不是必需的,而且我可以直接将消息发送到RabbitM
我试着把POJO转换成protobuf。这和我想做的是一样的。(https://github.com/BAData/protobuf-converter,将协议缓冲区转换为POJO) 但是,它不支持protobuf中的映射类型。所以当我试图转换protobuf的地图时 有什么简单的方法做这项工作吗?