当前位置: 首页 > 知识库问答 >
问题:

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

殷耀
2023-03-14

我试图创建一个非常基本的客户端,使用jersey/jackson从restful接口获取json回复。这两方面我都没有什么经验。经过一些令人沮丧的审判

现在我希望我得到的响应是不可变的,只是为了尊重正确的编程实践。但是,我不想必须将@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(这只是使类型值也无法工作)。这真的不是一种很好的方式吗?

共有1个答案

贺经纶
2023-03-14

查看@JsonAutoDetect注释:它可用于更改可见性设置,以便检测到非公共Fields。您也可以配置ObjectMapper以使用不同的全局默认值(方法类似于setViability())。

 类似资料:
  • 我花了过去几个小时试图设置2默认图像的nodejs 14和rethinkdb 2.3.5,所以很抱歉,如果语气有点沮丧,但我目前感到沮丧。 我的要求似乎超级简单。 下载nodejs 14和RejectDB 2.3.5的默认图像。 将我当前目录中的所有内容复制到nodejs 14映像中 我希望nodejs图像依赖于DB图像 在nodejs 14图像中运行2个命令<代码>npm ci和 请参阅测试中的

  • 我有一个带有私有方法的类,该方法调用一些外部类并执行它,如果不使用powermock,我如何防止这种情况发生?(该项目使用Junit5,目前还不支持powermock)。 我考虑过将这些函数移到外面,但我觉得有时方法确实属于特定的类,因为它们是它的一部分,将它们移出对我来说没有意义,下面只是一个例子来说明。 我已经知道大多数人会说不要测试私有方法,但a.我不完全同意,b.我不想在这里测试这个方法,

  • 我很好奇Jackson如何创建对象,包括没有设置器的私有属性/字段,并且只使用对象空构造函数。 我之所以问这个问题,是因为当我反序列化某些属性时,我想根据这些值自动设置其他属性。例如,我不想序列化图像,只想序列化它的路径。路径反序列化后,字段Image可以加载实际图像。构造反序列化对象后,尚未分配字段。从逻辑上讲,getter没有被调用。那么是什么巫毒魔法在触摸我的物品的私人部分呢? 但是,当杰克

  • 问题内容: 我正在尝试设置spring xml配置,而不必创建进一步的。但是,即使我将数据库属性包括在 spring.xml: 我在这里想念什么? 问题答案: 在entityManagerFactory bean定义中指定“ packagesToScan”和“ persistenceUnitName”属性。 请注意,这适用于Spring版本> 3.1

  • 问题内容: 我有一个工作的json服务,看起来像这样: 查询对象看起来像这样,当发布该Query对象的json表示形式时,效果很好。 现在,我想从客户端填充该对象,并使用Jersey客户端将该Query对象发布到服务中,并获得一个JSONObject作为结果。我的理解是,无需先将其转换为json对象,然后将其发布为String即可完成。 我已经尝试过类似的操作,但是我想我错过了一些。 我正在使用J