Вариантов несколько.
Первый, это как написано постом выше, привести к dynamic. Но у этого варианта есть недостаток - в каждый момент надо знать какое поле пришло, иначе получите эксепшин на уровне рантайма. Но знать это, по видимому, не реально.
Второй, это преобразовать к
public string form_name { get; set; }
public object value { get; set; }
В принципе это почти тот же вариант что и первый, ибо дайнемик это тот же обжект, просто на уровне компиляции не проходит проверки типов. А затем value приводить к заранее известному типу, сделать switch, чтобы логика была как то так
response.value = response.value as string;
if(response.value == null)
{
response.value = response.value as SomeClass;
if(response.value == null)
{
response.value = response.value as OtherClass;
....
Но у этого способа тоже есть недостаток, нужно точно знать какие типы могут приходить в value.
И третий вариант, это привести value к JObject и уже руками вытягивать нужные узлы со значением.
PS. И еще, не рекомендовал бы именовать модель подстраиваясь под json. Для этого у newton есть нужные атрибуты
public class Form
{
[PropertyName = "form_name")]
public string FormName { get; set; }
[PropertyName = "value")]
public string Value { get; set; }
}