3. deserialize

基本信息

  1. 接口名称: com.webank.weid.suite.api.transportation.inf.JsonTransportation.deserialize
  2. 接口定义: <T extends JsonSerializer> ResponseData<T> deserialize(String transString,Class<T> clazz)
  3. 接口描述: 用于反序列化对象,要求目标对象实现JsonSerializer接口。

接口入参:

名称类型非空说明备注
transStringStringY待序列化对象
clazzClass<T>Y目标类型

接口返回: <T extends JsonSerializer> com.webank.weid.protocol.response.ResponseData<T>;

名称类型说明备注
errorCodeInteger返回结果码
errorMessageString返回结果描述
result<T extends JsonSerializer>反序列化后的对象业务数据

此方法返回code

enumcodedesc
SUCCESS0成功
ENCRYPT_KEY_NOT_EXISTS100700无法获取秘钥
TRANSPORTATION_BASE_ERROR100800transportation基本未知异常
TRANSPORTATION_PROTOCOL_VERSION_ERROR100802协议版本错误
TRANSPORTATION_PROTOCOL_ENCODE_ERROR100803协议配置Encode异常
TRANSPORTATION_PROTOCOL_DATA_INVALID100805协议数据无效
TRANSPORTATION_ENCODE_BASE_ERROR100807Encode基本未知异常
PRESISTENCE_DATA_KEY_INVALID100901dataKey无效
UNKNOW_ERROR160003未知异常
BASE_ERROR160007weId基础未知异常
DATA_TYPE_CASE_ERROR160008数据转换异常
DIRECT_ROUTE_REQUEST_TIMEOUT160009AMOP超时
DIRECT_ROUTE_MSG_BASE_ERROR160010AMOP异常
SQL_EXECUTE_FAILED160011SQL执行异常
SQL_GET_CONNECTION_ERROR160013获取数据源连接异常

调用示例

  1. String weId = "did:weid:0x0106595955ce4713fd169bfa68e599eb99ca2e9f";
  2. List<String> verifierWeIdList = new ArrayList<String>();
  3. verifierWeIdList.add(weId);
  4.  
  5. String transString="";
  6.  
  7. //原文方式调用反序列化
  8. ResponseData<PresentationE> result1 =
  9. TransportationFactory
  10. .newJsonTransportation()
  11. .specify(verifierWeIdList)
  12. .deserialize(transString,PresentationE.class);
  13.  
  14. //密文方式调用反序列化
  15. ResponseData<PresentationE> result2 =
  16. TransportationFactory
  17. .newJsonTransportation()
  18. .specify(verifierWeIdList)
  19. .deserialize(transString,PresentationE.class);

时序图

sequenceDiagram participant 调用者 participant JsonTransportation 调用者->>JsonTransportation: 调用deserialize() JsonTransportation->>JsonTransportation: 入参非空、格式及合法性检查 opt 入参校验失败 JsonTransportation—>>调用者: 报错,提示参数不合法并退出 end JsonTransportation->>DataToolUtils: 调用deserialize()方法,反序列化协议数据 DataToolUtils—>>JsonTransportation:返回Json格式的协议数据 JsonTransportation->>JsonTransportation: 解析协议,判断是采用加密方式还是非加密方式 opt 非加密方式 JsonTransportation->>DataToolUtils: 调用deserialize方法将协议里的presentation反序列化为对象 DataToolUtils—>>JsonTransportation: 返回PresentationE对象 end opt 加密方式 JsonTransportation->>EncodeProcessor: 调用decode方法 EncodeProcessor->>User Agent: 发送AMOP请求,获取对称加密秘钥 User Agent—>>EncodeProcessor: 返回加密秘钥 EncodeProcessor->>EncodeProcessor: 解密协议数据 EncodeProcessor—>>JsonTransportation: 返回解密后的presentation数据 JsonTransportation->>DataToolUtils: 调用deserialize方法将协议里的presentation反序列化 DataToolUtils—>>JsonTransportation: 返回PresentationE对象presentation反序列化为对象 endJsonTransportation—>>调用者: 返回成功