JSON.NET serializa JObject enquanto ignora propriedades nulas

eu tenho umJObject que é usado comomodelo para chamar serviços da web RESTful. esteJObject é criado por meio de um analisador e, como é usado como um modelo para informar ao usuário como é o esquema do nó de extremidade, tive que descobrir uma maneira de preservar todas as propriedades, e é por isso que estou usando os valores como padrão.null. Como exemplo, é assim que o objeto se parece originalmente:

{  
   "Foo":{  
      "P1":null,
      "P2":null,
      "P3":null,
      "P4":{  
         "P1":null,
         "P2":null,
         "P3":null,
      },
      "FooArray":[  
         {  
            "F1":null,
            "F2":null,
            "F3":null,
         }
      ]
   },
   "Bar":null
}

O usuário poderá preencher campos individuais conforme necessário, comoFoo.P2 eFoo.P4.P1:

{  
   "Foo":{  
      "P1":null,
      "P2":"hello world",
      "P3":null,
      "P4":{  
         "P1":1,
         "P2":null,
         "P3":null,
      },
      "FooArray":[  
         {  
            "F1":null,
            "F2":null,
            "F3":null,
         }
      ]
   },
   "Bar":null
}

ou seja, eles se preocupam apenas com esses dois campos. Agora eu quero serializar este modelo (JObject) de volta a uma sequência JSON, mas deseja que apenas os campos preenchidos sejam exibidos. Então eu tentei isso:

string json = JsonConvert.SerializeObject(template,
    new JsonSerializerSettings
    {
        NullValueHandling = NullValueHandling.Ignore
    });

Infelizmente, isso não funcionou. Me depareiessa questão e percebi que umnull valor no objeto é um realJToken digite e não é realmente umnull, o que faz sentido. No entanto, nesse caso muito particular, preciso ser capaz de me livrar desses campos "não utilizados". Tentei iterar manualmente sobre nós e removê-los, mas isso também não funcionou. Observe que o único tipo gerenciado que estou usando éJObject; Não tenho um modelo para converter o objeto ou definir atributos, pois esse "modelo" é resolvido em tempo de execução. Eu só estava me perguntando se alguém encontrou um problema como este e tem alguma idéia. Qualquer ajuda é muito apreciada!

questionAnswers(3)

yourAnswerToTheQuestion