|
62 | 62 | "java:S4423", |
63 | 63 | "java:S4830", |
64 | 64 | "java:S5843", |
| 65 | + "java:S5996", |
65 | 66 | "java:S5998" |
66 | 67 | }) |
67 | 68 | public class U<T> extends Underscore<T> { |
@@ -134,7 +135,9 @@ public enum Mode { |
134 | 135 | REPLACE_NULL_WITH_EMPTY_VALUE, |
135 | 136 | REPLACE_EMPTY_STRING_WITH_EMPTY_VALUE, |
136 | 137 | REMOVE_FIRST_LEVEL_XML_TO_JSON, |
137 | | - FORCE_ADD_ROOT_JSON_TO_XML |
| 138 | + FORCE_ADD_ROOT_JSON_TO_XML, |
| 139 | + FORCE_REMOVE_ARRAY_ATTRIBUTE_JSON_TO_XML, |
| 140 | + FORCE_REMOVE_ARRAY_BOOLEAN_NUMBER_ATTRIBUTES_JSON_TO_XML |
138 | 141 | } |
139 | 142 |
|
140 | 143 | public U(final Iterable<T> iterable) { |
@@ -2573,6 +2576,15 @@ public static String jsonToXml( |
2573 | 2576 | final Map<String, Object> map = U.newLinkedHashMap(); |
2574 | 2577 | map.put(newRootName, object); |
2575 | 2578 | result = Xml.toXml(map, identStep); |
| 2579 | + } else if (mode == Mode.FORCE_REMOVE_ARRAY_ATTRIBUTE_JSON_TO_XML) { |
| 2580 | + result = Xml.toXml((Map) object, identStep, newRootName, Xml.ArrayTrue.SKIP); |
| 2581 | + } else if (mode == Mode.FORCE_REMOVE_ARRAY_BOOLEAN_NUMBER_ATTRIBUTES_JSON_TO_XML) { |
| 2582 | + result = |
| 2583 | + Xml.toXml( |
| 2584 | + replaceNumberAndBooleanWithString((Map) object), |
| 2585 | + identStep, |
| 2586 | + newRootName, |
| 2587 | + Xml.ArrayTrue.SKIP); |
2576 | 2588 | } else { |
2577 | 2589 | result = Xml.toXml((Map) object, identStep); |
2578 | 2590 | } |
@@ -2937,6 +2949,36 @@ private static Object makeReplaceEmptyString(Object value) { |
2937 | 2949 | return result; |
2938 | 2950 | } |
2939 | 2951 |
|
| 2952 | + public static Map<String, Object> replaceNumberAndBooleanWithString(Map<String, Object> map) { |
| 2953 | + Map<String, Object> outMap = newLinkedHashMap(); |
| 2954 | + for (Map.Entry<String, Object> entry : map.entrySet()) { |
| 2955 | + outMap.put( |
| 2956 | + entry.getKey(), |
| 2957 | + entry.getValue() instanceof Boolean || entry.getValue() instanceof Number |
| 2958 | + ? String.valueOf(entry.getValue()) |
| 2959 | + : makeReplaceNumberAndBoolean(entry.getValue())); |
| 2960 | + } |
| 2961 | + return outMap; |
| 2962 | + } |
| 2963 | + |
| 2964 | + @SuppressWarnings("unchecked") |
| 2965 | + private static Object makeReplaceNumberAndBoolean(Object value) { |
| 2966 | + final Object result; |
| 2967 | + if (value instanceof List) { |
| 2968 | + List<Object> values = newArrayList(); |
| 2969 | + for (Object item : (List) value) { |
| 2970 | + values.add( |
| 2971 | + item instanceof Map ? replaceNumberAndBooleanWithString((Map) item) : item); |
| 2972 | + } |
| 2973 | + result = values; |
| 2974 | + } else if (value instanceof Map) { |
| 2975 | + result = replaceNumberAndBooleanWithString((Map) value); |
| 2976 | + } else { |
| 2977 | + result = value; |
| 2978 | + } |
| 2979 | + return result; |
| 2980 | + } |
| 2981 | + |
2940 | 2982 | public static Map<String, Object> replaceFirstLevel(Map<String, Object> map) { |
2941 | 2983 | return replaceFirstLevel(map, 0); |
2942 | 2984 | } |
|
0 commit comments