1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.struts2.json;
22
23 import java.util.Iterator;
24 import java.util.List;
25 import java.util.Map;
26
27 /***
28 * Isolate the process of cleaning JSON data from the Interceptor class itself.
29 */
30 public abstract class JSONCleaner {
31
32 public Object clean(String ognlPrefix, Object data) throws JSONException {
33 if (data == null)
34 return null;
35 else if (data instanceof List)
36 return cleanList(ognlPrefix, data);
37 else if (data instanceof Map)
38 return cleanMap(ognlPrefix, data);
39 else
40 return cleanValue(ognlPrefix, data);
41 }
42
43 protected Object cleanList(String ognlPrefix, Object data) throws JSONException {
44 List list = (List) data;
45 int count = list.size();
46 for (int i = 0; i < count; i++) {
47 list.set(i, clean(ognlPrefix + "[" + i + "]", list.get(i)));
48 }
49 return list;
50 }
51
52 protected Object cleanMap(String ognlPrefix, Object data) throws JSONException {
53 Map map = (Map) data;
54 Iterator iter = map.entrySet().iterator();
55 while (iter.hasNext()) {
56 Map.Entry e = (Map.Entry) iter.next();
57 e.setValue(clean((ognlPrefix.length() > 0 ? ognlPrefix + "." : "") + e.getKey(), e.getValue()));
58 }
59 return map;
60 }
61
62 protected abstract Object cleanValue(String ognlName, Object data) throws JSONException;
63
64 }