3. deserialize
基本信息
- 接口名称: com.webank.weid.suite.api.transportation.inf.QrCodeTransportation.deserialize
- 接口定义: <T extends JsonSerializer> ResponseData<T> deserialize(String transString,Class<T> clazz)
- 接口描述: 用于反序列化对象,要求目标对象实现JsonSerializer接口。
接口入参:
名称 | 类型 | 非空 | 说明 | 备注 |
---|---|---|---|---|
transString | String | Y | 待序列化对象 | |
clazz | Class<T> | Y | 目标类型 |
接口返回: <T extends JsonSerializer> com.webank.weid.protocol.response.ResponseData<T>;
名称 | 类型 | 说明 | 备注 |
---|---|---|---|
errorCode | Integer | 返回结果码 | |
errorMessage | String | 返回结果描述 | |
result | <T extends JsonSerializer> | 反序列化后的对象 | 业务数据 |
此方法返回code
enum | code | desc |
---|---|---|
SUCCESS | 0 | 成功 |
ENCRYPT_KEY_NOT_EXISTS | 100700 | 无法获取秘钥 |
TRANSPORTATION_PROTOCOL_VERSION_ERROR | 100802 | 协议版本错误 |
TRANSPORTATION_PROTOCOL_STRING_INVALID | 100804 | 协议字符串无效 |
TRANSPORTATION_ENCODE_BASE_ERROR | 100807 | Encode基本未知异常 |
PRESISTENCE_DATA_KEY_INVALID | 100901 | id无效 |
UNKNOW_ERROR | 160003 | 未知异常 |
BASE_ERROR | 160007 | weId基础未知异常 |
DATA_TYPE_CASE_ERROR | 160008 | 数据转换异常 |
DIRECT_ROUTE_REQUEST_TIMEOUT | 160009 | AMOP超时 |
DIRECT_ROUTE_MSG_BASE_ERROR | 160010 | AMOP异常 |
SQL_EXECUTE_FAILED | 160011 | SQL执行异常 |
SQL_GET_CONNECTION_ERROR | 160013 | 获取数据源连接异常 |
调用示例
- String weId = "did:weid:0x0106595955ce4713fd169bfa68e599eb99ca2e9f";
- List<String> verifierWeIdList = new ArrayList<String>();
- verifierWeIdList.add(weId);
- String transString="";
- //原文方式调用反序列化
- ResponseData<PresentationE> result1 =
- TransportationFactory
- .newQrCodeTransportation()
- .specify(verifierWeIdList)
- .deserialize(transString,PresentationE.class);
- //密文方式调用反序列化
- ResponseData<PresentationE> result2 =
- TransportationFactory
- .newQrCodeTransportation()
- .specify(verifierWeIdList)
- .deserialize(transString,PresentationE.class);
时序图
sequenceDiagram participant 调用者 participant QrCodeTransportation 调用者->>QrCodeTransportation: 调用deserialize() QrCodeTransportation->>QrCodeTransportation: 入参非空、格式及合法性检查 opt 入参校验失败 QrCodeTransportation—>>调用者: 报错,提示参数不合法并退出 end QrCodeTransportation->>QrCodeTransportation: 解析协议,判断是采用加密方式还是非加密方式 opt 非加密方式 QrCodeTransportation->>DataToolUtils: 调用deserialize方法将协议里的presentation反序列化为对象 DataToolUtils—>>QrCodeTransportation: 返回PresentationE对象 end opt 加密方式 QrCodeTransportation->>EncodeProcessor: 调用decode方法 EncodeProcessor->>User Agent: 发送AMOP请求,获取对称加密秘钥 User Agent—>>EncodeProcessor: 返回加密秘钥 EncodeProcessor->>EncodeProcessor: 解密协议数据 EncodeProcessor—>>QrCodeTransportation: 返回解密后的presentation数据 QrCodeTransportation->>DataToolUtils: 调用deserialize方法将协议里的presentation反序列化 DataToolUtils—>>QrCodeTransportation: 返回PresentationE对象presentation反序列化为对象 endQrCodeTransportation—>>调用者: 返回成功