我在我的Spring引导webapp中配置了一个FaignClient,在那里我调用一个返回以下对象的外部api。
public class Issue {
private Assignee assignee;
private Date createdAt;
private Date updatedAt;
private Date closedAt;
private String description;
private Date dueDate;
public Assignee getAssignee() {
return assignee;
}
public void setAssignee(Assignee assignee) {
this.assignee = assignee;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Date getDueDate() {
return dueDate;
}
public void setDueDate(Date dueDate) {
this.dueDate = dueDate;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
public Date getClosedAt() {
return closedAt;
}
public void setClosedAt(Date closedAt) {
this.closedAt = closedAt;
}
@Override
public String toString() {
return (JacksonJson.toJsonString(this));
}
}
字段updatedAt
、createdAt
和closedAt
都是蛇型的。所有多字字段显示为空。有没有办法配置佯装客户端的Jackson解析器,使其能够处理蛇形字符?请注意,我无法更改spring boot webapp的默认Jackson解析器,因为我自己以驼峰格式呈现json。我只需要在我用来连接外部RESTAPI的假客户端上配置这个解析器。
我已经验证了api调用返回的json响应在每个json字段中都包含有效值。
我是这样解决的。我创建了一个定制的JacksonParser作为Springbean。
@Configuration(proxyBeanMethods = false)
public class FeignClientDateFormatConfig {
@Bean
public Decoder feignDecoder() {
HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(customObjectMapper());
ObjectFactory<HttpMessageConverters> objectFactory = () -> new HttpMessageConverters(jacksonConverter);
return new ResponseEntityDecoder(new SpringDecoder(objectFactory));
}
public ObjectMapper customObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper;
}
}
这将成功解析所有snake案例属性。
请注意,这有一个严重的限制。如果您有多个假客户端
,并且其中只有一个返回snake-case json,那么您就不走运了。这将覆盖默认的佯装客户端
config。此解决方案唯一可行的解决方法是将您的FeignClient
调用移动到单独的微服务中,以便其他FeignClient
调用不受影响。
这是我的建筑。格雷德尔: 我试图找出问题所在,使用以下代码来分析问题: 结果是:
问题内容: 使用Google Geocoder v3,如果我尝试对20个地址进行地理编码,除非得到的时间间隔约为1秒,否则我将获得OVER_QUERY_LIMIT,但是所有标记都需要20秒才能放置完。 除了预先存储坐标以外,还有其他方法吗? 问题答案: 不,实际上没有其他方法:如果您有很多位置,并希望在地图上显示它们,最好的解决方案是: 创建位置后,使用地理编码器获取纬度+经度 将它们与地址一起存
当kotlin在每个块中更改其类型时,如何从json响应中解析answerData键?我试图保留它,但无法键入cast。如何解析应答数据?
我正在基于Tomcat servlet和NIO创建服务。输入时有大的XML请求(约100 MB),通过HTML POST方法发送。我只想流前8千磅,然后立即发送响应到客户端。 当我尝试发送小请求(内容中只有几行)时,套接字工作正常。 2016-02-01 10:44:52 Http11NioProtocol[DEBUG]套接字:[org.apache.tomcat.util.net.NioEndp
问题内容: 是否可以为类型选择性地启用elasticsearch字段的索引? 通过特定索引的映射设置,可以设置属性 {“ index”:“ not_analyzed”} 对于特定领域。由于我的文档中的字段太多,并且将来可能会更改结构,因此我需要一个映射,除非另行指定,否则默认情况下不会分析字段。 这可能吗? 问题答案: 是的- 看一下动态模板 请尝试以下操作: 动态模板适用于您的映射未涵盖的新字段
问题内容: 这是我的课: 我可以通过将以下内容放在ProGuard规则文件中来保留这些私有字段: 但我不想不必单独指定每个字段。我怎样才能做到这一点? 问题答案: 根据ProGuard文档,通配符可匹配任何字段。因此应该是这样的: 如果要在所有类中保留私有字段,请使用: