Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 如何设置我的POJO,以便jersey在没有@jsonignoreproperties的情况下填充私有字段_Java_Json_Jersey_Jackson - Fatal编程技术网

Java 如何设置我的POJO,以便jersey在没有@jsonignoreproperties的情况下填充私有字段

Java 如何设置我的POJO,以便jersey在没有@jsonignoreproperties的情况下填充私有字段,java,json,jersey,jackson,Java,Json,Jersey,Jackson,我正在尝试创建一个非常基本的客户端,使用jersey/jackson从restful接口获取json回复。我在这两方面都没有什么经验。在尝试让我的Pojo填充一些令人沮丧的尝试和错误之后,我了解到它只会自动填充一个未设置@JsonIgnoreProperties的变量(如果该变量是公共的) 现在我希望我得到的回复是不变的,只是为了尊重正确的编程实践。然而,我不想将@JsonIgnoreProperties注释添加到任何一个变量中,这将变得令人沮丧。如果变量名与json字段匹配,是否有更简单的方法

我正在尝试创建一个非常基本的客户端,使用jersey/jackson从restful接口获取json回复。我在这两方面都没有什么经验。在尝试让我的Pojo填充一些令人沮丧的尝试和错误之后,我了解到它只会自动填充一个未设置@JsonIgnoreProperties的变量(如果该变量是公共的)

现在我希望我得到的回复是不变的,只是为了尊重正确的编程实践。然而,我不想将@JsonIgnoreProperties注释添加到任何一个变量中,这将变得令人沮丧。如果变量名与json字段匹配,是否有更简单的方法告诉jackson填充所有变量,即使是私有变量

我不知道它将如何工作,但下面是我在尝试设置时使用的快速测试代码的一个示例。我必须手写,而不是复制/粘贴,所以请原谅任何打字错误

我的客户:

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()