2. serialize
基本信息
- 接口名称: com.webank.weid.suite.api.transportation.inf.JsonTransportation.serialize
- 接口定义: <T extends JsonSerializer> ResponseData<String> serialize(T object,ProtocolProperty property)
- 接口描述: 用于序列化对象,要求对象实现JsonSerializer接口。
接口入参:
名称 | 类型 | 非空 | 说明 | 备注 |
---|---|---|---|---|
object | <T extends JsonSerializer> | Y | 待序列化对象 | |
property | ProtocolProperty | Y | 协议配置 |
接口返回: com.webank.weid.protocol.response.ResponseData<String>;
名称 | 类型 | 说明 | 备注 |
---|---|---|---|
errorCode | Integer | 返回结果码 | |
errorMessage | String | 返回结果描述 | |
result | String | 序列化后的字符串数据 | 业务数据 |
此方法返回code
enum | code | desc |
---|---|---|
SUCCESS | 0 | 成功 |
TRANSPORTATION_BASE_ERROR | 100800 | transportation基本未知异常 |
TRANSPORTATION_PROTOCOL_PROPERTY_ERROR | 100801 | 协议配置异常 |
TRANSPORTATION_PROTOCOL_ENCODE_ERROR | 100803 | 协议配置Encode异常 |
TRANSPORTATION_PROTOCOL_DATA_INVALID | 100805 | 协议数据无效 |
TRANSPORTATION_ENCODE_BASE_ERROR | 100807 | Encode基本未知异常 |
PRESISTENCE_DATA_KEY_INVALID | 100901 | dataKey无效 |
UNKNOW_ERROR | 160003 | 未知异常 |
BASE_ERROR | 160007 | weId基础未知异常 |
DATA_TYPE_CASE_ERROR | 160008 | 数据转换异常 |
SQL_EXECUTE_FAILED | 160011 | SQL执行异常 |
SQL_GET_CONNECTION_ERROR | 160013 | 获取数据源连接异常 |
调用示例
- String weId = "did:weid:0x0106595955ce4713fd169bfa68e599eb99ca2e9f";
- List<String> verifierWeIdList = new ArrayList<String>();
- verifierWeIdList.add(weId);
- PresentationE presentation;
- //原文方式调用
- ResponseData<String> result1 =
- TransportationFactory
- .newJsonTransportation()
- .specify(verifierWeIdList)
- .serialize(presentation,new ProtocolProperty(EncodeType.ORIGINAL));
- //密文方式调用
- ResponseData<String> result2 =
- TransportationFactory
- .newJsonTransportation()
- .specify(verifierWeIdList)
- .serialize(presentation,new ProtocolProperty(EncodeType.CIPHER));
时序图
sequenceDiagramparticipant 调用者participant JsonTransportation调用者->>JsonTransportation: 调用serialize()JsonTransportation->>JsonTransportation: 入参非空、格式及合法性检查opt 入参校验失败JsonTransportation—>>调用者: 报错,提示参数不合法并退出endJsonTransportation->>JsonTransportation: 拼装Json格式的协议头数据JsonTransportation->>JsonTransportation: 判断是采用加密方式还是非加密方式opt 非加密方式JsonTransportation->>JsonTransportation: 将presentation原文放入协议里endopt 加密方式JsonTransportation->>EncodeProcessor: 调用encode方法EncodeProcessor->>EncodeProcessor: 采用AES算法,生成对称加密秘钥EncodeProcessor->>persistence: 保存至存储库里persistence—>>EncodeProcessor: 返回EncodeProcessor—>>JsonTransportation: 返回加密之后的presentation数据JsonTransportation->>JsonTransportation: 将presentation密文放入协议里endJsonTransportation->>DataToolUtils: 调用objToJsonStrWithNoPretty()将协议序列化成Json数据DataToolUtils—>>JsonTransportation:返回包含presentation的Json数据JsonTransportation—>>调用者: 返回成功