@@ -15,14 +15,17 @@ protected virtual IJsonSerializer GetSerializer() {
15
15
return new DefaultJsonSerializer ( ) ;
16
16
}
17
17
18
+ private string [ ] _sampleModelExcludes = { nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , nameof ( SampleModel . Nested ) , "Date*" } ;
19
+ private string [ ] _eventModelExcludes = { nameof ( Event . Type ) , nameof ( Event . Source ) , "Date" , nameof ( Event . Geo ) , nameof ( Event . Count ) , nameof ( Event . ReferenceId ) , nameof ( Event . Tags ) , nameof ( Event . Value ) } ;
20
+
18
21
[ Fact ]
19
22
public void CanSerialize ( ) {
20
23
var data = new SampleModel {
21
24
Date = DateTime . Now ,
22
25
Message = "Testing"
23
26
} ;
24
27
IJsonSerializer serializer = GetSerializer ( ) ;
25
- string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
28
+ string json = serializer . Serialize ( data , _sampleModelExcludes ) ;
26
29
Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
27
30
}
28
31
@@ -35,7 +38,7 @@ public void CanSerializeEvent() {
35
38
ev . Data [ "FirstName" ] = "Blake" ;
36
39
37
40
IJsonSerializer serializer = GetSerializer ( ) ;
38
- string json = serializer . Serialize ( ev , new [ ] { "Date" } ) ;
41
+ string json = serializer . Serialize ( ev , _eventModelExcludes ) ;
39
42
Assert . Equal ( @"{""message"":""Testing"",""data"":{""FirstName"":""Blake""}}" , json ) ;
40
43
}
41
44
@@ -47,7 +50,7 @@ public void CanExcludeProperties() {
47
50
Message = "Testing"
48
51
} ;
49
52
IJsonSerializer serializer = GetSerializer ( ) ;
50
- string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
53
+ string json = serializer . Serialize ( data , _sampleModelExcludes ) ;
51
54
Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
52
55
}
53
56
@@ -61,9 +64,22 @@ public void CanExcludeNestedProperties() {
61
64
Message = "Nested"
62
65
}
63
66
} ;
67
+
64
68
IJsonSerializer serializer = GetSerializer ( ) ;
65
- string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
66
- Assert . Equal ( @"{""message"":""Testing"",""nested"":{""message"":""Nested""}}" , json ) ;
69
+ string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , "Date*" } ) ;
70
+ Assert . Equal ( @"{""message"":""Testing"",""nested"":{""message"":""Nested"",""nested"":null}}" , json ) ;
71
+ }
72
+
73
+ [ Fact ]
74
+ public void ShouldIncludeNullObjects ( ) {
75
+ var data = new SampleModel {
76
+ Date = DateTime . Now ,
77
+ Message = "Testing" ,
78
+ Nested = null
79
+ } ;
80
+ IJsonSerializer serializer = GetSerializer ( ) ;
81
+ string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , "Date*" } ) ;
82
+ Assert . Equal ( @"{""message"":""Testing"",""nested"":null}" , json ) ;
67
83
}
68
84
69
85
[ Fact ]
@@ -87,14 +103,14 @@ public void CanExcludeMultiwordProperties() {
87
103
}
88
104
89
105
[ Fact ]
90
- public void WillIgnoreDefaultValues ( ) {
106
+ public void ShouldIncludeDefaultValues ( ) {
91
107
var data = new SampleModel {
92
108
Number = 0 ,
93
109
Bool = false
94
110
} ;
95
111
IJsonSerializer serializer = GetSerializer ( ) ;
96
- string json = serializer . Serialize ( data ) ;
97
- Assert . Equal ( @"{}" , json ) ;
112
+ string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , nameof ( SampleModel . Nested ) , "Date*" } ) ;
113
+ Assert . Equal ( @"{""number"":0,""bool"":false,""message"":null }" , json ) ;
98
114
var model = serializer . Deserialize < SampleModel > ( json ) ;
99
115
Assert . Equal ( data . Number , model . Number ) ;
100
116
Assert . Equal ( data . Bool , model . Bool ) ;
@@ -112,7 +128,7 @@ public void CanSetMaxDepth() {
112
128
}
113
129
} ;
114
130
IJsonSerializer serializer = GetSerializer ( ) ;
115
- string json = serializer . Serialize ( data , maxDepth : 2 ) ;
131
+ string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , "Date*" } , maxDepth : 2 ) ;
116
132
Assert . Equal ( @"{""message"":""Level 1"",""nested"":{""message"":""Level 2""}}" , json ) ;
117
133
}
118
134
@@ -124,8 +140,8 @@ public void WillIgnoreEmptyCollections() {
124
140
Collection = new Collection < string > ( )
125
141
} ;
126
142
IJsonSerializer serializer = GetSerializer ( ) ;
127
- string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
128
- Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
143
+ string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Nested ) , nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , "Date* " } ) ;
144
+ Assert . Equal ( @"{""message"":""Testing"",""dictionary"":null }" , json ) ;
129
145
}
130
146
131
147
// TODO: Ability to deserialize objects without underscores
0 commit comments