package org.xmx0632.deliciousfruit.erp;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.xmx0632.deliciousfruit.erp.bo.ErpApiReadResponse;
import org.xmx0632.deliciousfruit.erp.bo.ErpApiReadResponseWrapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
@Component
public class ErpMessageParser {
private static Logger log = LoggerFactory.getLogger(ErpMessageParser.class);
public String toJson(Object object) {
return JSON.toJSONString(object);
}
<T> T fromJson(String text, TypeReference<T> type) {
return JSON.parseObject(text, type);
}
public <T> T parseResponse_old(String resp) {
// 解析json响应消息
ErpApiReadResponse<T> fromJson = fromJson(resp,
new TypeReference<ErpApiReadResponse<T>>() {
});
log.info("fromJson:{}", fromJson);
if (fromJson == null || fromJson.getData() == null) {
return null;
}
return fromJson.getData().get(0);
}
@SuppressWarnings("unchecked")
public <T> T parseResponse(String resp, T t) {
// 解析json响应消息
ErpApiReadResponseWrapper<ErpApiReadResponse<T>> fromJson = fromJson(
resp,
new TypeReference<ErpApiReadResponseWrapper<ErpApiReadResponse<T>>>() {
});
log.info("fromJson:{}", fromJson);
if (fromJson == null || fromJson.getData() == null
|| fromJson.getData().getData() == null
|| fromJson.getData().getData().isEmpty()) {
return null;
}
String result = fromJson.getResult();
if (!"0".equals(result)) {
return null;
}
List<T> respList = fromJson.getData().getData();
T respObject = (T) respList.get(0);
log.info("respObject:{}", respObject);
return (T) JSON.parseObject(respObject.toString(), t.getClass());
}
}