Java ObjectMapper:如何在snake案例中获取根元素
我正在尝试读取对象并将其转换为字符串。但是根元素正在从Java ObjectMapper:如何在snake案例中获取根元素,java,jackson2,jackson-databind,Java,Jackson2,Jackson Databind,我正在尝试读取对象并将其转换为字符串。但是根元素正在从payment\u token更改为PaymentToken ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(Include.NON_NULL); mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); mapper.setPropertyNamingStrategy(Pro
payment\u token
更改为PaymentToken
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
String requestString = mapper.writeValueAsString(paymentToken); //paymenttoken is valid object
输入对象:
{
"payment_token": {
"client_id": "test",
"currency_code": "USD"
}
}
将输出获取为:
{
"PaymentToken": {
"client_id": "test",
"currency_code": "USD"
}
}
请帮助我获取输入中的根对象?您可以按如下方式使用
import com.fasterxml.jackson.annotation.JsonRootName;
@JsonRootName(value = "payment_token")
public class PaymentToken {
...
}
参考:
如果您添加了上述注释,让我们看看它是如何工作的将以下配置添加到ObjectMapper
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.SerializationFeature;
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); // additional to your config
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
String paymentToken = "{\"payment_token\":{\"client_id\":\"test\",\"currency_code\":\"USD\"}}";
System.out.println(mapper.readValue(paymentToken, PaymentToken.class));
System.out.println(mapper.writeValueAsString(paymentToken));
输出:
PaymentToken(clientId=test,currencyCode=USD){“字符串”:“{”支付令牌\“:{”客户id \“:\”测试\“,\”货币代码\“:\”美元\“}}”
如上所述,objectMapper可以正确地反序列化和序列化。我没有访问此类的权限,是否有任何映射器配置?不需要任何配置,您使用的是哪个Jackson版本?添加
com.fasterxml.jackson.core:jackson-core:2.4.x
作为依赖项,版本应>=2.4.0,我使用的是2.9.8版本,我使用的是2.9.6
版本。不确定它为什么返回根元素PaymentToken
。我不能在pojo中使用注释,因为我没有这个类。你的意思是你不想让“PaymentToken”键进入字符串,只想{“client\u id”:“test”,“currency\u code”:“USD”}
?我的问题是帮助我获取根对象,因为它在输入中
你的JSON被破坏了。此外,paymentToken也不清楚。您可以添加如何构造paymentToken,以及它是否也具有DTO类共享。