コード例 #1
0
 public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options)
 {
     if (value == null)
     {
         writer.WriteNullValue();
     }
     else
     {
         if (value is JsonObject jsonObject)
         {
             ObjectConverter.Write(writer, jsonObject, options);
         }
         else if (value is JsonArray jsonArray)
         {
             ArrayConverter.Write(writer, (JsonArray)value, options);
         }
         else
         {
             Debug.Assert(value is JsonValue);
             ValueConverter.Write(writer, (JsonValue)value, options);
         }
     }
 }
コード例 #2
0
        public override object?Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            switch (reader.TokenType)
            {
            case JsonTokenType.Null:
                return(null);

            case JsonTokenType.String:
            case JsonTokenType.False:
            case JsonTokenType.True:
            case JsonTokenType.Number:
                return(ValueConverter.Read(ref reader, typeToConvert, options));

            case JsonTokenType.StartArray:
                return(ArrayConverter.Read(ref reader, typeToConvert, options));

            case JsonTokenType.StartObject:
                return(ObjectConverter.Read(ref reader, typeToConvert, options));

            default:
                Debug.Assert(false);
                throw new JsonException();
            }
        }