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!