1
1
package com .github .fabienrenaud .jjb .data ;
2
2
3
+ import com .alibaba .fastjson2 .JSONFactory ;
4
+ import com .alibaba .fastjson2 .JSONReader ;
5
+ import com .alibaba .fastjson2 .JSONWriter ;
6
+ import com .alibaba .fastjson2 .reader .ObjectReaderProvider ;
7
+ import com .alibaba .fastjson2 .writer .ObjectWriterProvider ;
3
8
import com .github .fabienrenaud .jjb .RandomUtils ;
4
9
import com .github .fabienrenaud .jjb .data .gen .DataGenerator ;
5
10
import com .github .fabienrenaud .jjb .provider .JsonProvider ;
@@ -29,6 +34,8 @@ public abstract class JsonSource<T> {
29
34
private final StreamSerializer <T > streamSerializer ;
30
35
private final StreamDeserializer <T > streamDeserializer ;
31
36
37
+ private final FastjsonProvider fastjsonFeatures ;
38
+
32
39
JsonSource (int quantity , int individualSize , JsonProvider provider , DataGenerator <T > dataGenerator , StreamSerializer <T > streamSerializer , StreamDeserializer <T > streamDeserializer ) {
33
40
this .provider = provider ;
34
41
@@ -49,6 +56,24 @@ public abstract class JsonSource<T> {
49
56
}
50
57
return arr ;
51
58
});
59
+
60
+ ObjectWriterProvider featuresWriterProvider = new ObjectWriterProvider ();
61
+ featuresWriterProvider .setDisableAutoType (true );
62
+ featuresWriterProvider .setDisableArrayMapping (true );
63
+ featuresWriterProvider .setDisableJSONB (true );
64
+ featuresWriterProvider .setDisableReferenceDetect (true );
65
+ JSONFactory .createWriteContext (featuresWriterProvider );
66
+
67
+ ObjectReaderProvider featuresReaderProvider = new ObjectReaderProvider ();
68
+ featuresReaderProvider .setDisableArrayMapping (true );
69
+ featuresReaderProvider .setDisableAutoType (true );
70
+ featuresReaderProvider .setDisableJSONB (true );
71
+ featuresReaderProvider .setDisableReferenceDetect (true );
72
+ featuresReaderProvider .setDisableSmartMatch (true );
73
+
74
+ fastjsonFeatures = new FastjsonProvider (
75
+ JSONFactory .createReadContext (featuresReaderProvider ),
76
+ JSONFactory .createWriteContext (featuresWriterProvider ));
52
77
}
53
78
54
79
private void populateFields (int quantity , int individualSize ) {
@@ -124,4 +149,10 @@ public StreamDeserializer<T> streamDeserializer() {
124
149
private int index (int bound ) {
125
150
return bound == 1 ? 0 : RandomUtils .nextInt (bound );
126
151
}
152
+
153
+ public FastjsonProvider fastjsonFeatures () {
154
+ return fastjsonFeatures ;
155
+ }
156
+
157
+ public record FastjsonProvider (JSONReader .Context readerContext , JSONWriter .Context writerContext ) {}
127
158
}
0 commit comments