@@ -12,6 +12,9 @@ namespace Elastic.Clients.Elasticsearch;
12
12
13
13
internal sealed class FieldConverter : JsonConverter < Field >
14
14
{
15
+ private static readonly JsonEncodedText FieldProperty = JsonEncodedText . Encode ( "field" ) ;
16
+ private static readonly JsonEncodedText FormatProperty = JsonEncodedText . Encode ( "format" ) ;
17
+
15
18
private IElasticsearchClientSettings _settings ;
16
19
17
20
public override void WriteAsPropertyName ( Utf8JsonWriter writer , Field value , JsonSerializerOptions options )
@@ -48,19 +51,19 @@ private static Field ReadObjectField(ref Utf8JsonReader reader)
48
51
{
49
52
if ( reader . TokenType == JsonTokenType . PropertyName )
50
53
{
51
- var propertyName = reader . GetString ( ) ;
52
- reader . Read ( ) ;
53
-
54
- switch ( propertyName )
54
+ if ( reader . ValueTextEquals ( FieldProperty . EncodedUtf8Bytes ) )
55
+ {
56
+ reader . Read ( ) ;
57
+ field = reader . GetString ( ) ;
58
+ }
59
+ else if ( reader . ValueTextEquals ( FormatProperty . EncodedUtf8Bytes ) )
60
+ {
61
+ reader . Read ( ) ;
62
+ format = reader . GetString ( ) ;
63
+ }
64
+ else
55
65
{
56
- case "field" :
57
- field = reader . GetString ( ) ;
58
- break ;
59
- case "format" :
60
- format = reader . GetString ( ) ;
61
- break ;
62
- default :
63
- throw new JsonException ( "Unexpected property while reading `Field`." ) ;
66
+ throw new JsonException ( $ "Unexpected property while reading `{ nameof ( Field ) } `.") ;
64
67
}
65
68
}
66
69
}
@@ -70,19 +73,13 @@ private static Field ReadObjectField(ref Utf8JsonReader reader)
70
73
return new Field ( field , format ) ;
71
74
}
72
75
73
- throw new JsonException ( "Unable to read `Field` from JSON." ) ;
76
+ throw new JsonException ( $ "Unable to read `{ nameof ( Field ) } ` from JSON.") ;
74
77
}
75
78
76
79
public override void Write ( Utf8JsonWriter writer , Field value , JsonSerializerOptions options )
77
80
{
78
81
InitializeSettings ( options ) ;
79
82
80
- if ( value is null )
81
- {
82
- writer . WriteNullValue ( ) ;
83
- return ;
84
- }
85
-
86
83
var fieldName = _settings . Inferrer . Field ( value ) ;
87
84
88
85
if ( string . IsNullOrEmpty ( value . Format ) )
@@ -92,10 +89,8 @@ public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOpt
92
89
else
93
90
{
94
91
writer . WriteStartObject ( ) ;
95
- writer . WritePropertyName ( "field" ) ;
96
- writer . WriteStringValue ( fieldName ) ;
97
- writer . WritePropertyName ( "format" ) ;
98
- writer . WriteStringValue ( value . Format ) ;
92
+ writer . WriteString ( FieldProperty , fieldName ) ;
93
+ writer . WriteString ( FormatProperty , value . Format ) ;
99
94
writer . WriteEndObject ( ) ;
100
95
}
101
96
}
0 commit comments