All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.ipokerface.weixin.xml.ListSuffixResultSerializer Maven / Gradle / Ivy

There is a newer version: 1.5.0
Show newest version
package cn.ipokerface.weixin.xml;

import cn.ipokerface.weixin.Constant;
import cn.ipokerface.weixin.utils.StringUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.NameFilter;

import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by       PokerFace
 * Create Date      2019-12-28.
 * Email:           [email protected]
 * Version          1.0.0
 * 

* Description: */ public class ListSuffixResultSerializer{ /** * 序列化为json * * @param object * @return json */ public static JSONObject serializeToJSON(Object object) { JSONObject result = (JSONObject) JSON.toJSON(object); Map listsuffixFields = ListSuffixResultDeserializer .getListsuffixFields(object.getClass()); if (!listsuffixFields.isEmpty()) { JSONField jsonField = null; Object value = null; for (Field field : listsuffixFields.keySet()) { jsonField = field.getAnnotation(JSONField.class); if (jsonField != null && StringUtil.isNotBlank(jsonField.name())) { result.remove(jsonField.name()); } else { result.remove(field.getName()); } try { field.setAccessible(true); value = field.get(object); } catch (Exception e) { ;// } if (value != null && value instanceof List) { result.putAll(listsuffixConvertMap((List) value)); } } } return result; } /** * list对象转换为map的$n形式 * * @param listsuffix * @return */ public static Map listsuffixConvertMap(List listsuffix) { Map listMap = new HashMap(); if (listsuffix != null && !listsuffix.isEmpty()) { for (int i = 0; i < listsuffix.size(); i++) { listMap.putAll(JSON.parseObject(JSON.toJSONString( listsuffix.get(i), new ListsuffixEndNameFilter(i)), new TypeReference>() { })); } } return listMap; } private static class ListsuffixEndNameFilter implements NameFilter { private final int index; public ListsuffixEndNameFilter(int index) { this.index = index; } @Override public String process(Object object, String name, Object value) { return String.format("%s_%d", name, index); } } /** * 序列化为xml * * @param object * @return xml */ public static String serializeToXML(Object object) { JSONObject obj = serializeToJSON(object); StringWriter sw = new StringWriter(); XMLStreamWriter xw = null; try { xw = XMLOutputFactory.newInstance().createXMLStreamWriter(sw); xw.writeStartDocument(Constant.UTF_8.name(), "1.0"); xw.writeStartElement("xml"); for (String key : obj.keySet()) { if (StringUtil.isBlank(obj.getString(key))) { continue; } xw.writeStartElement(key); xw.writeCData(obj.getString(key)); xw.writeEndElement(); } xw.writeEndElement(); xw.writeEndDocument(); } catch (XMLStreamException e) { e.printStackTrace(); } finally { if (xw != null) { try { xw.close(); } catch (XMLStreamException e) { ; } } try { sw.close(); } catch (IOException e) { ; } } return sw.getBuffer().toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy