Java 如何设置我的POJO,以便jersey在没有@jsonignoreproperties的情况下填充私有字段
我正在尝试创建一个非常基本的客户端,使用jersey/jackson从restful接口获取json回复。我在这两方面都没有什么经验。在尝试让我的Pojo填充一些令人沮丧的尝试和错误之后,我了解到它只会自动填充一个未设置@JsonIgnoreProperties的变量(如果该变量是公共的) 现在我希望我得到的回复是不变的,只是为了尊重正确的编程实践。然而,我不想将@JsonIgnoreProperties注释添加到任何一个变量中,这将变得令人沮丧。如果变量名与json字段匹配,是否有更简单的方法告诉jackson填充所有变量,即使是私有变量 我不知道它将如何工作,但下面是我在尝试设置时使用的快速测试代码的一个示例。我必须手写,而不是复制/粘贴,所以请原谅任何打字错误 我的客户:Java 如何设置我的POJO,以便jersey在没有@jsonignoreproperties的情况下填充私有字段,java,json,jersey,jackson,Java,Json,Jersey,Jackson,我正在尝试创建一个非常基本的客户端,使用jersey/jackson从restful接口获取json回复。我在这两方面都没有什么经验。在尝试让我的Pojo填充一些令人沮丧的尝试和错误之后,我了解到它只会自动填充一个未设置@JsonIgnoreProperties的变量(如果该变量是公共的) 现在我希望我得到的回复是不变的,只是为了尊重正确的编程实践。然而,我不想将@JsonIgnoreProperties注释添加到任何一个变量中,这将变得令人沮丧。如果变量名与json字段匹配,是否有更简单的方法
Client client;
public myClient(){
DefaultClientConfig clientConfig=new DefaultClientConfig();
ClientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING), true);
client=Client.create(clientConfig);
}
getTest(){
WebResource resource=client.resource(getTestURL());
Object result=resource.accept(MediaType.APPLICATION_JSON).get(TestEntry.class);
String stringResult=resource.accept(MediaType.APPLICATION_JSON).get(String.class);
System.out.println("result: "+result);
System.out.println("originalResult: "+result);
}
TestEntry类:
@JsonIgnoreProperties(ignoreUnknown=true)
public clas TestEntry extends JsonEntry{
@JsonProperty("type")
String type;
String rate
}
JsonEntry是一个具有Gson静态对象和toString方法的类,该方法使用Gson将类作为json输出。它还将JsonIgnoreProperties设置为false,但它不做任何其他事情
输出:
result: {"type":"typeValue"}
originalResult: {"type": "typeValue", "rate": "rateValue"}
我尝试了多次,但都没有成功,包括尝试创建和加载contextResolver(这使得类型值也无法工作)。这真的不是一个很好的方法吗?看看
@jsonautodect
注释:它可以用来更改可见性设置,以便检测非公共字段。您也可以将ObjectMapper
配置为使用不同的全局默认值(方法类似于setVisibility()
)