O objetivo desse Grooming foi o de alinhar como deveria ser o comportamentos padrão ao desserializar uma string, que contem um XML, para um objeto da linguagem que a recebeu.
O maior ponto de dúvida estava em como tratar os seguintes cenários:
A discussão rodou em torno do comportamento esperado tanto para o conversor quanto para os EAIs.
Foi identificado que os EAIs se comportam de maneira diferente em relação a esses itens, porém ainda não existe certeza sobre os comportamentos atuais.
O conversor está retirando as tags vazias ou nulas.
Chegamos às seguintes definições:
Variável String:
<name/> <name2></name2>
{ "name" : "", "name2": "" }
Variável boolean, data ou numérica
<date/> <number></number>
{ code: "Precisamos definir o código identificador", message: "Não foi possível desserializar a mensagem. A propriedade 'date' esperava um tipo datetime, mas recebeu string", helpUrl: "http://tdn.totvs.com/linkcomdetalhesdoerro", detailedMessage: "Texto contendo a exception gerada"}
Seguem exemplos abaixo de comportamento do conversor:
<prop xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
{ "prop": null }