001package gudusoft.gsqlparser.util.json;
002
003import gudusoft.gsqlparser.dlineage.util.BeanUtil;
004
005import java.lang.reflect.Array;
006import java.util.ArrayList;
007import java.util.Collection;
008import java.util.List;
009
010public class JSONRender {
011
012        public String toJSONString(Object obj) {
013                return toJSONString(obj, false);
014        }
015        
016        public String toJSONString(Object obj, boolean ignoreId) {
017                if (obj.getClass().isArray()) {
018                        int size = Array.getLength(obj);
019                        List<Object> arrayList = new ArrayList<>(size);
020                        for (int i = 0; i < size; i++) {
021                                arrayList.add(Array.get(obj, i));
022                        }
023                        obj = arrayList;
024                }
025
026                if (obj instanceof Collection) {
027                        List<Object> mappedList = new ArrayList<>();
028                        for (Object element : (Collection<?>) obj) {
029                                mappedList.add(BeanUtil.bean2Map(element));
030                        }
031                        return new JSONSerializer(ignoreId).serialize(mappedList);
032                } else {
033                        return new JSONSerializer(ignoreId).serialize(BeanUtil.bean2Map(obj));
034                }
035        }
036
037        private static class Holder {
038                private static final JSONRender INSTANCE = new JSONRender();
039        }
040
041        public static JSONRender getInstance() {
042                return Holder.INSTANCE;
043        }
044
045        private JSONRender() {
046        }
047}