5
5
import java .util .Iterator ;
6
6
7
7
import com .fasterxml .jackson .core .*;
8
-
9
8
import com .fasterxml .jackson .databind .*;
10
9
import com .fasterxml .jackson .databind .jsontype .TypeSerializer ;
11
10
12
11
import org .json .*;
13
12
14
13
public class JSONObjectSerializer extends JSONBaseSerializer <JSONObject >
15
14
{
15
+ private static final long serialVersionUID = 1L ;
16
+
16
17
public final static JSONObjectSerializer instance = new JSONObjectSerializer ();
17
18
18
19
public JSONObjectSerializer ()
19
20
{
20
21
super (JSONObject .class );
21
22
}
22
-
23
+
24
+ @ Override // since 2.6
25
+ public boolean isEmpty (SerializerProvider provider , JSONObject value ) {
26
+ return (value == null ) || value .length () == 0 ;
27
+ }
28
+
23
29
@ Override
24
- public void serialize (JSONObject value , JsonGenerator jgen , SerializerProvider provider )
25
- throws IOException , JsonGenerationException
30
+ public void serialize (JSONObject value , JsonGenerator g , SerializerProvider provider )
31
+ throws IOException
26
32
{
27
- jgen .writeStartObject ();
28
- serializeContents (value , jgen , provider );
29
- jgen .writeEndObject ();
33
+ g .writeStartObject ();
34
+ serializeContents (value , g , provider );
35
+ g .writeEndObject ();
30
36
}
31
37
32
38
@ Override
33
- public void serializeWithType (JSONObject value , JsonGenerator jgen , SerializerProvider provider ,
34
- TypeSerializer typeSer )
35
- throws IOException , JsonGenerationException
39
+ public void serializeWithType (JSONObject value , JsonGenerator g , SerializerProvider provider ,
40
+ TypeSerializer typeSer ) throws IOException
36
41
{
37
- typeSer .writeTypePrefixForObject (value , jgen );
38
- serializeContents (value , jgen , provider );
39
- typeSer .writeTypeSuffixForObject (value , jgen );
42
+ typeSer .writeTypePrefixForObject (value , g );
43
+ serializeContents (value , g , provider );
44
+ typeSer .writeTypeSuffixForObject (value , g );
40
45
}
41
46
42
47
@ Override
@@ -46,41 +51,41 @@ public JsonNode getSchema(SerializerProvider provider, Type typeHint)
46
51
return createSchemaNode ("object" , true );
47
52
}
48
53
49
- protected void serializeContents (JSONObject value , JsonGenerator jgen , SerializerProvider provider )
50
- throws IOException , JsonGenerationException
54
+ protected void serializeContents (JSONObject value , JsonGenerator g , SerializerProvider provider )
55
+ throws IOException
51
56
{
52
57
Iterator <?> it = value .keys ();
53
58
while (it .hasNext ()) {
54
59
String key = (String ) it .next ();
55
60
Object ob = value .opt (key );
56
61
if (ob == null || ob == JSONObject .NULL ) {
57
62
if (provider .isEnabled (SerializationFeature .WRITE_NULL_MAP_VALUES )) {
58
- jgen .writeNullField (key );
63
+ g .writeNullField (key );
59
64
}
60
65
continue ;
61
66
}
62
- jgen .writeFieldName (key );
67
+ g .writeFieldName (key );
63
68
Class <?> cls = ob .getClass ();
64
69
if (cls == JSONObject .class ) {
65
- serialize ((JSONObject ) ob , jgen , provider );
70
+ serialize ((JSONObject ) ob , g , provider );
66
71
} else if (cls == JSONArray .class ) {
67
- JSONArraySerializer .instance .serialize ((JSONArray ) ob , jgen , provider );
72
+ JSONArraySerializer .instance .serialize ((JSONArray ) ob , g , provider );
68
73
} else if (cls == String .class ) {
69
- jgen .writeString ((String ) ob );
74
+ g .writeString ((String ) ob );
70
75
} else if (cls == Integer .class ) {
71
- jgen .writeNumber (((Integer ) ob ).intValue ());
76
+ g .writeNumber (((Integer ) ob ).intValue ());
72
77
} else if (cls == Long .class ) {
73
- jgen .writeNumber (((Long ) ob ).longValue ());
78
+ g .writeNumber (((Long ) ob ).longValue ());
74
79
} else if (cls == Boolean .class ) {
75
- jgen .writeBoolean (((Boolean ) ob ).booleanValue ());
80
+ g .writeBoolean (((Boolean ) ob ).booleanValue ());
76
81
} else if (cls == Double .class ) {
77
- jgen .writeNumber (((Double ) ob ).doubleValue ());
82
+ g .writeNumber (((Double ) ob ).doubleValue ());
78
83
} else if (JSONObject .class .isAssignableFrom (cls )) { // sub-class
79
- serialize ((JSONObject ) ob , jgen , provider );
84
+ serialize ((JSONObject ) ob , g , provider );
80
85
} else if (JSONArray .class .isAssignableFrom (cls )) { // sub-class
81
- JSONArraySerializer .instance .serialize ((JSONArray ) ob , jgen , provider );
86
+ JSONArraySerializer .instance .serialize ((JSONArray ) ob , g , provider );
82
87
} else {
83
- provider .defaultSerializeValue (ob , jgen );
88
+ provider .defaultSerializeValue (ob , g );
84
89
}
85
90
}
86
91
}
0 commit comments