Question: I have a JSON Object which contains a `null` as string ,which cannot be avoided , when i'm sending this object to my API , im getting this error saying 

> 
> Error converting value "null" to type
>  'System.Nullable`1[System.Int64]'
> 
> 
> 

**My Sample JSON** 

```
{ 
  Name:'Test',
  Id:'null'
}

```

**My Model / DTO**

```
class Class1{
  public string Name {get;set;}
  public long? Id {get;set;}
}

```

Answer: 
You can achieve this by using a `JsonConverter` to handle the logic of parsing the `string` as a `long?` which can be null.

First example using Newtonsoft.Json

```cs
public class NewtonsoftStringToLongJsonConverter : Newtonsoft.Json.JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        throw new NotImplementedException();
    }

    public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
    {
        var value = (string)reader.Value;
        if (string.Equals("null", value, StringComparison.InvariantCultureIgnoreCase))
        {
            return null;
        }

        if (!long.TryParse(value, out var parsedValue))
        {
            return null;
        }

        return parsedValue;
    }

    public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}

```

Your model updates to

```cs
public class Class1
{
    public string Name { get; set; }

    [Newtonsoft.Json.JsonConverter(typeof(NewtonsoftStringToLongJsonConverter))]
    public long? Id { get; set; }
}

```

The second option using the System.Text.Json implementation.

```cs
public class SystemTextStringToLongJsonConverter : System.Text.Json.Serialization.JsonConverter<long?>
{
    public override bool CanConvert(Type typeToConvert)
        => typeToConvert == typeof(long?);

    public override long? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        var value = reader.GetString();
        if(string.Equals("null", value, StringComparison.InvariantCultureIgnoreCase))
        {
            return null;
        }

        if(!long.TryParse(value, out var parsedValue))
        {
            return null;
        }

        return parsedValue;
    }

    public override void Write(Utf8JsonWriter writer, long? value, JsonSerializerOptions options)
    {
        throw new NotImplementedException();
    }
}

```

Finally, your model updates to

```cs
public class Class1
{
    public string Name { get; set; }

    [Newtonsoft.Json.JsonConverter(typeof(NewtonsoftStringToLongJsonConverter))]
    public long? Id { get; set; }
}

```
Get the json string. Do `string.Replace("'null'", "null")` then map it to your `dto`