
net.arccode.wechat.pay.api.common.parser.json.JsonConverter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wechat-pay-sdk Show documentation
Show all versions of wechat-pay-sdk Show documentation
wechat pay SDK, out of the box.
The newest version!
package net.arccode.wechat.pay.api.common.parser.json;
import net.arccode.wechat.pay.api.common.exception.WXPayApiException;
import net.arccode.wechat.pay.api.common.parser.Converter;
import net.arccode.wechat.pay.api.common.constant.WXPayConstants;
import net.arccode.wechat.pay.api.common.parser.Reader;
import net.arccode.wechat.pay.api.common.util.Converters;
import net.arccode.wechat.pay.api.common.util.json.ExceptionErrorListener;
import net.arccode.wechat.pay.api.common.util.json.JSONReader;
import net.arccode.wechat.pay.api.common.util.json.JSONValidatingReader;
import net.arccode.wechat.pay.api.protocol.base.WXPayResponse;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* json格式转换
*
* @author http://arccode.net
* @since 2015-11-06
*/
public class JsonConverter implements Converter {
@Override
public T toResponse(String resp, Class clazz) throws WXPayApiException {
JSONReader reader = new JSONValidatingReader(new ExceptionErrorListener());
Object rootObj = reader.read(resp);
if (rootObj instanceof Map, ?>) {
Map, ?> rootJson = (Map, ?>) rootObj;
Collection> values = rootJson.values();
for (Object rspObj : values) {
if (rspObj instanceof Map, ?>) {
Map, ?> rspJson = (Map, ?>) rspObj;
return fromJson(rspJson, clazz);
}
}
}
return null;
}
/**
* 把JSON格式的数据转换为对象
*
* @param 泛型领域对象
* @param json JSON格式的数据
* @param clazz 泛型领域类型
* @return 领域对象
* @throws WXPayApiException
*/
public T fromJson(final Map, ?> json, Class clazz) throws WXPayApiException {
return Converters.convert(clazz, new Reader() {
public boolean hasReturnField(Object name) {
return json.containsKey(name);
}
public Object getPrimitiveObject(Object name) {
return json.get(name);
}
public Object getObject(Object name, Class> type) throws WXPayApiException {
Object tmp = json.get(name);
if (tmp instanceof Map, ?>) {
Map, ?> map = (Map, ?>) tmp;
return fromJson(map, type);
} else {
return null;
}
}
public List> getListObjects(Object listName, Object itemName, Class> subType)
throws WXPayApiException {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy