Ciao,
utilizzo un controlle che invia i dati, presi da un database, riempendo una classe. Al momento della serializzazione del Json vorrei eliminare tutti i valori empty\null\guid.empty.
Per esempio:
    "Person" : {
      "Surname" : "Surname",
      "Name" : "Name",
      "Sex" : "",
      "BirthDate" : null,
      "BirthPlace" : "BirthPlace",
      "ID" : "00000000-0000-0000-0000-000000000000",
      "IsEnabled": false
      }
Vorrei che fosse:
    "Person" : {
      "Surname" : "Surname",
      "Name" : "Name",
      "BirthPlace" : "BirthPlace",
      "IsEnabled": false
      }
Nel WebApiConfig ho inserito la riga:
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
che correttamente mi ignora i valori null (ma non gli empty).
Ho trovato che si potrebbe utilizzare
config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore };
che ignora tutti i valori di default. Purtroppo però ho visto che ignora i default anche dei bool e degli integer. Quindi mi ignorerebbe anche la mia  "IsEnabled": false, che invece vorrei avere nel json.
Non conosco molto bene le impostazioni del WebApiConfig e quindi mi chiedevo se è possibile nella DefaultValueHandling.Ignore  specificare solo i tipi che si vogliono ignorare o se c'è un altro metodo per farlo.
Grazie