[英]numeric fields not enclosed in quotes in JSON using jersey in Glassfish 4
我有一個 Web 服務,它接受一個 int 並且一個字符串返回一個完整的 bean。 我需要調整返回的 JSON 的格式。 我正在用球衣跑 glassfish 4
這是網絡服務:
@GET
@Produces( "application/json" )
@Path( "license/{requestID}/{textToVerify}" )
public CustomerBean getMetaData( @PathParam( "requestID" ) int requestID, @PathParam( "textToVerify" ) String textToVerify )
{
// code removed.
}
這是返回的bean。
@XmlRootElement( name = "customer" )
@XmlType( propOrder =
{
"id", "name", "duration", "status", "dateCreated", "dateActivated", "editionID"
} )
public class CustomerBean
{
private Integer id;
private String serial;
private Integer duration;
private Integer status;
private Date dateCreated;
private Date dateActivated;
private int editionID;
// getter/setters and constructor ommitted...
}
這是返回的 JSON:
{"id":100,"name":"Joe User","duration":0,"status":2,"dateCreated":"2013-01-03T02:36:35","dateActivated":"2013-01-03T02:39:03","edition":3}
所以沒有一個數字字段用引號括起來......有沒有辦法改變它以便所有字段值都被括起來? 我知道這是 JAXB 早期實現的一個錯誤,但我現在被卡住了,因為客戶端期望用引號括起來的所有字段
我明白在這個簡單的例子中,我可以制作所有字段字符串並按照我想要的方式格式化日期,但這是一個簡化的例子 - 我有近 30 個不同的 bean 可以從我的應用程序返回,但我不是希望進行所有這些轉換...如果我可以全局更改 JSON,那將是理想的。
根據 ( http://json.org/ ) 格式正確的數字沒有被引用。
不確定您使用的是什么序列化程序,但如果是 Jackson:
objectMapper.configure(Feature.WRITE_NUMBERS_AS_STRINGS, true);
如果您使用的是 Moxy(默認),我不知道是否或如何更改它。 如果您想禁用 Moxy 以便可以使用 Jackson,請在 Jersey 中注冊該類。
public class Jackson2Feature implements Feature {
@Override
public boolean configure(FeatureContext context) {
final String disableMoxy = PropertiesHelper.getPropertyNameForRuntime(
CommonProperties.MOXY_JSON_FEATURE_DISABLE,
context.getConfiguration().getRuntimeType());
context.property(disableMoxy, true);
// Allow jaxb annotations
context.register(JacksonJaxbJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class);
return true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.