json - BackBlazeTokenResponse - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“允许”
问题描述
我在尝试获取 BackBlaze 授权令牌时遇到错误。它以前工作正常,突然我开始收到此错误消息 -
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "allowed" (class au.com.polonious.cloud.node.backblaze.BackBlazeTokenResponse), not marked as ignorable (7 known properties: "authorizationToken", "minimumPartSize", "apiUrl", "downloadUrl", "accountId", "absoluteMinimumPartSize", "recommendedPartSize"])
at [Source: {
"absoluteMinimumPartSize": 5000000,
"accountId": "b0c893f558bc",
"allowed": {
"bucketId": null,
"capabilities": [
"all"
],
"namePrefix": null
},
"apiUrl": "https://api001.backblazeb2.com",
"authorizationToken": "4_001b0c893f558bc0000000000_01851d94_6e8e3e_acct_yxmSYWYVETByLq8bwW8HMQSEjlM=",
"downloadUrl": "https://f001.backblazeb2.com",
"minimumPartSize": 100000000,
"recommendedPartSize": 100000000
}
; line: 4, column: 15] (through reference chain: au.com.polonious.cloud.node.backblaze.BackBlazeTokenResponse["allowed"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1093)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1489)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1467)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:282)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2858)
这是我的代码-
private BackBlazeTokenResponse getBackBlazeAuth(String accountId, String applicationKey)
throws Exception{
HttpURLConnection connection = null;
String headerForAuthorizeAccount = "Basic " + Base64.getEncoder().encodeToString((accountId + ":" + applicationKey).getBytes());
log.info("getBackBlaze Auth - headerForAuthorizeAccount - "+headerForAuthorizeAccount);
BackBlazeTokenResponse backBlazeTokenResponse = new BackBlazeTokenResponse();
String tokenJson="";
try {
URL url = new URL("https://api.backblazeb2.com/b2api/v1/b2_authorize_account");
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", headerForAuthorizeAccount);
InputStream in = new BufferedInputStream(connection.getInputStream());
tokenJson = myInputStreamReader(in);
} catch (Exception e) {
e.printStackTrace();
} finally {
connection.disconnect();
//log.info("Output JSON:"+tokenJson);
ObjectMapper mapper = new ObjectMapper();
//JSON from file to Object
log.info("tokenJson- "+ tokenJson);
backBlazeTokenResponse = mapper.readValue(tokenJson, BackBlazeTokenResponse.class);
log.info("getAuthorizationToken:"+backBlazeTokenResponse.getAuthorizationToken());
return backBlazeTokenResponse;
}
}
错误在这一行 -
backBlazeTokenResponse = mapper.readValue(tokenJson, BackBlazeTokenResponse.class);
不知道为什么它突然开始抛出这个错误,可能是 BackBlaze API 发生了一些变化。请帮忙。
解决方案
这解决了我的问题
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.setVisibilityChecker(VisibilityChecker.Std.defaultInstance().withFieldVisibility(JsonAutoDetect.Visibility.ANY));
推荐阅读
- javascript - 这个 findRoute 函数在 Eloquent Javascript 3rd Edition 的第 7 章中是如何工作的?
- r - 基于闪亮服务器的开放版本从闪亮应用下载文件时防止超时
- php - Azure表存储php分页不起作用
- compilation - 是否有可用的确定性架构模拟器?
- docker - 将数据从 Elastic search 导出到本地 Docker 容器
- decorator - Hyperledger Composer 建模语言中的装饰器
- json - 将 json 文件导入 Angular 4.x TypeScript 应用程序
- bash - 期望脚本在单独调用时起作用,但不是作为盐状态
- mysql - 如何将文本插入 mysql SELECT 语句并以句子形式显示输出?
- node.js - ParallelSaveError:无法并行保存()同一个文档