13
13
14
14
public class JSONTest {
15
15
private JSON json = new fastjsonJSON ();
16
+
16
17
@ Test
17
18
public void testEncoding () {
18
- WritableJSONObject jsonObject = json .newObject ();
19
- jsonObject .set ("name" , "webee.易" );
20
- jsonObject .set ("age" , 27 );
21
- jsonObject .set ("address" , null );
22
- jsonObject .set ("height" , 1.74 );
23
- jsonObject .set ("graduated" , true );
24
- jsonObject .set ("languages" , new Object []{"java" , "python" , "golang" , null });
19
+ int age = 27 ;
20
+ double javaScore = 80. ;
21
+ JSONObject jsonObject = genJsonObject (age , javaScore );
25
22
26
- WritableJSONObject scores = json .newObject ();
27
- scores .set ("java" , 80 );
28
- scores .set ("python" , 85.0 );
29
- scores .set ("golang" , 82.5 );
30
- scores .set ("xxx" , null );
31
- jsonObject .set ("scores" , scores );
32
-
33
- Assert .assertEquals (jsonObject .getString ("name" ), "webee.易" );
34
- Assert .assertEquals (jsonObject .getInteger ("age" ), Integer .valueOf (27 ));
35
- Assert .assertEquals (jsonObject .getDouble ("height" ), Double .valueOf (1.74 ));
36
- Assert .assertEquals (jsonObject .getString ("address" ), null );
37
- Assert .assertEquals (jsonObject .isNull ("address" ), true );
38
- Assert .assertEquals (jsonObject .getBoolean ("graduated" ), true );
39
- Assert .assertEquals (jsonObject .getArray ("languages" ).getString (0 ), "java" );
40
- Assert .assertEquals (jsonObject .getArray ("languages" ).getString (3 ), null );
41
- Assert .assertEquals (jsonObject .getArray ("languages" ).isNull (3 ), true );
42
- Assert .assertEquals (jsonObject .getObject ("scores" ).getDouble ("java" ), Double .valueOf (80 ));
43
- Assert .assertEquals (jsonObject .getObject ("scores" ).getDouble ("xxx" ), null );
44
- Assert .assertEquals (jsonObject .getObject ("scores" ).isNull ("xxx" ), true );
23
+ doAssets (jsonObject , age , javaScore );
45
24
46
25
//System.out.println(jsonObject.get("languages").getClass());
47
26
//System.out.println(jsonObject.get("scores").getClass());
@@ -50,21 +29,12 @@ public void testEncoding() {
50
29
51
30
@ Test
52
31
public void testDecoding () {
53
- String text = "{\" address\" :null,\" age\" :27,\" graduated\" :true,\" height\" :1.74,\" languages\" :[\" java\" ,\" python\" ,\" golang\" ,null],\" name\" :\" webee.易\" ,\" scores\" :{\" golang\" :82.5,\" java\" :80,\" python\" :85,\" xxx\" :null}}" ;
32
+ int age = 27 ;
33
+ double javaScore = 80. ;
34
+ String text = genJsonObject (age , javaScore ).toJSONString ();
54
35
JSONObject jsonObject = json .parseObject (text );
55
36
56
- Assert .assertEquals (jsonObject .getString ("name" ), "webee.易" );
57
- Assert .assertEquals (jsonObject .getInteger ("age" ), Integer .valueOf (27 ));
58
- Assert .assertEquals (jsonObject .getDouble ("height" ), Double .valueOf (1.74 ));
59
- Assert .assertEquals (jsonObject .isNull ("address" ), true );
60
- Assert .assertEquals (jsonObject .getString ("address" ), null );
61
- Assert .assertEquals (jsonObject .getBoolean ("graduated" ), true );
62
- Assert .assertEquals (jsonObject .getArray ("languages" ).getString (0 ), "java" );
63
- Assert .assertEquals (jsonObject .getArray ("languages" ).getString (3 ), null );
64
- Assert .assertEquals (jsonObject .getArray ("languages" ).isNull (3 ), true );
65
- Assert .assertEquals (jsonObject .getObject ("scores" ).getDouble ("java" ), Double .valueOf (80 ));
66
- Assert .assertEquals (jsonObject .getObject ("scores" ).getDouble ("xxx" ), null );
67
- Assert .assertEquals (jsonObject .getObject ("scores" ).isNull ("xxx" ), true );
37
+ doAssets (jsonObject , age , javaScore );
68
38
}
69
39
70
40
@ Test
@@ -98,4 +68,102 @@ public void testEmoji() {
98
68
jsonObject .set ("key" , value );
99
69
Assert .assertEquals (jsonObject .getString ("key" ), value );
100
70
}
71
+
72
+ @ Test
73
+ public void testEncodingPerf () {
74
+ int count = 10000 ;
75
+ long ts = 0 ;
76
+ long dMax = 0 ;
77
+ long dMin = Long .MAX_VALUE ;
78
+ for (int i = 0 ; i <= count ; i ++) {
79
+ int age = i + 20 ;
80
+ double javaScore = i + 60. ;
81
+ long ss = System .nanoTime ();
82
+ JSONObject jsonObject = genJsonObject (age , javaScore );
83
+
84
+ doAssets (jsonObject , age , javaScore );
85
+
86
+ long ee = System .nanoTime ();
87
+ long d = ee - ss ;
88
+ if (i > 0 ) {
89
+ // 忽略第一次
90
+ ts += d ;
91
+ dMax = Math .max (dMax , d );
92
+ dMin = Math .min (dMin , d );
93
+ }
94
+ System .out .println (String .format ("%d: %f" , i , d /1000000. ));
95
+ }
96
+ System .out .println (String .format ("total: %f" , ts /1000000. ));
97
+ System .out .println (String .format ("avg: %f" , ts /1000000. /count ));
98
+ System .out .println (String .format ("max: %f" , dMax /1000000. ));
99
+ System .out .println (String .format ("min: %f" , dMin /1000000. ));
100
+ }
101
+
102
+ @ Test
103
+ public void testDecodingPerf () {
104
+ int count = 10000 ;
105
+ long ts = 0 ;
106
+ long dMax = 0 ;
107
+ long dMin = Long .MAX_VALUE ;
108
+ for (int i = 0 ; i <= count ; i ++) {
109
+ int age = i + 20 ;
110
+ double javaScore = i + 60. ;
111
+ String text = genJsonObject (age , javaScore ).toJSONString ();
112
+ long ss = System .nanoTime ();
113
+ JSONObject jsonObject = new fastjsonJSON ().parseObject (text );
114
+
115
+ doAssets (jsonObject , age , javaScore );
116
+
117
+ long ee = System .nanoTime ();
118
+ long d = ee - ss ;
119
+ if (i > 0 ) {
120
+ // 忽略第一次
121
+ ts += d ;
122
+ dMax = Math .max (dMax , d );
123
+ dMin = Math .min (dMin , d );
124
+ }
125
+ System .out .println (String .format ("%d: %f" , i , d /1000000. ));
126
+ }
127
+ System .out .println (String .format ("total: %f" , ts /1000000. ));
128
+ System .out .println (String .format ("avg: %f" , ts /1000000. /count ));
129
+ System .out .println (String .format ("max: %f" , dMax /1000000. ));
130
+ System .out .println (String .format ("min: %f" , dMin /1000000. ));
131
+ }
132
+
133
+ private JSONObject genJsonObject (int age , double javaScore ) {
134
+ WritableJSONObject jsonObject = new fastjsonJSON ().newObject ();
135
+ jsonObject .set ("name" , "webee.易" );
136
+ jsonObject .set ("age" , age );
137
+ jsonObject .set ("address" , null );
138
+ jsonObject .set ("height" , 1.74 );
139
+ jsonObject .set ("graduated" , true );
140
+ jsonObject .set ("long.max" , Long .MAX_VALUE );
141
+ jsonObject .set ("languages" , new Object []{"java" , "python" , "golang" , null });
142
+
143
+ WritableJSONObject scores = json .newObject ();
144
+ scores .set ("java" , javaScore );
145
+ scores .set ("python" , 85.0 );
146
+ scores .set ("golang" , 82.5 );
147
+ scores .set ("xxx" , null );
148
+ jsonObject .set ("scores" , scores );
149
+
150
+ return jsonObject ;
151
+ }
152
+
153
+ private void doAssets (JSONObject jsonObject , int age , double javaScore ) {
154
+ Assert .assertEquals (jsonObject .getString ("name" ), "webee.易" );
155
+ Assert .assertEquals (jsonObject .getInteger ("age" ), Integer .valueOf (age ));
156
+ Assert .assertEquals (jsonObject .getDouble ("height" ), Double .valueOf (1.74 ));
157
+ Assert .assertEquals (jsonObject .getString ("address" ), null );
158
+ Assert .assertEquals (jsonObject .isNull ("address" ), true );
159
+ Assert .assertEquals (jsonObject .getBoolean ("graduated" ), true );
160
+ Assert .assertEquals (jsonObject .getLong ("long.max" ), Long .valueOf (Long .MAX_VALUE ));
161
+ Assert .assertEquals (jsonObject .getArray ("languages" ).getString (0 ), "java" );
162
+ Assert .assertEquals (jsonObject .getArray ("languages" ).getString (3 ), null );
163
+ Assert .assertEquals (jsonObject .getArray ("languages" ).isNull (3 ), true );
164
+ Assert .assertEquals (jsonObject .getObject ("scores" ).getDouble ("java" ), Double .valueOf (javaScore ));
165
+ Assert .assertEquals (jsonObject .getObject ("scores" ).getDouble ("xxx" ), null );
166
+ Assert .assertEquals (jsonObject .getObject ("scores" ).isNull ("xxx" ), true );
167
+ }
168
+
101
169
}
0 commit comments