Десериализовать xml список объектов - PullRequest
2 голосов
/ 10 июля 2020
             <ns2:dni>
                <ns2:tipoDocumento>
                    <ns2:pais>
                        <ns2:codigo>COL</ns2:codigo>
                        <ns2:nombre>Colombia</ns2:nombre>
                    </ns2:pais>
                    <ns2:codigo>CC</ns2:codigo>
                </ns2:tipoDocumento>
                <ns2:numero>1144040396</ns2:numero>
                <ns2:principal>true</ns2:principal>
                <ns2:campoExtension>
                    <ns2:clave>CIUDAD_DCTO</ns2:clave>
                    <ns2:valor>76001</ns2:valor>
                </ns2:campoExtension>
                <ns2:campoExtension>
                    <ns2:clave>DEPARTAMENTO_DCTO</ns2:clave>
                    <ns2:valor>76</ns2:valor>
                </ns2:campoExtension>
                <ns2:campoExtension>
                    <ns2:clave>PAIS_DCTO</ns2:clave>
                    <ns2:valor>COL</ns2:valor>
                </ns2:campoExtension>
                <ns2:campoExtension>
                    <ns2:clave>LUGAR_EXPEDICION</ns2:clave>
                    <ns2:valor>CALI</ns2:valor>
                </ns2:campoExtension>
            </ns2:dni>

Итак, у меня возникли проблемы с десериализацией этого xml документа, пока мне удалось десериализовать "tipoDocumento", "numero" и "Principal" правильно, проблема в том, когда он достигает объектов "campoExtension", так как вы, вероятно, можете видеть, что они не инкапсулированы в объект только для них, и если я попытаюсь создать список в модели, он останется пустым после десериализации, вот что я получу:

         "dni": {
            "tipoDocumento": {
                "pais": {
                    "codigo": "COL",
                    "nombre": "Colombia"
                },
                "codigo": "CC"
            },
            "numero": "1144040396",
            "principal": true,
            "campoExtension": []
        }

и да, это a json, потому что я превращаю его в объект c#, чтобы потом можно было сериализовать с помощью newstonsoft. помогите пожалуйста.

это мой Dni Class:

public class Dni
{
    public TipoDocumento tipoDocumento;
    public string numero;
    public bool principal;
    public CampoExtension[] campoExtension;
}

1 Ответ

1 голос
/ 10 июля 2020

Итак, я нашел решение, которое я сделал, обновил свой класс dni до следующего:

[XmlRoot("dni")]
public class Dni
{
    public TipoDocumento tipoDocumento;
    public string numero;
    public bool principal;

    [XmlElement("campoExtension")]
    public List<CampoExtension> campoExtension;
}

теперь мой json выглядит так:

       "dni": {
            "tipoDocumento": {
                "pais": {
                    "codigo": "COL",
                    "nombre": "Colombia"
                },
                "codigo": "CC"
            },
            "numero": "1144040396",
            "principal": true,
            "campoExtension": [
                {
                    "clave": "CIUDAD_DCTO",
                    "valor": "76001"
                },
                {
                    "clave": "DEPARTAMENTO_DCTO",
                    "valor": "76"
                },
                {
                    "clave": "PAIS_DCTO",
                    "valor": "COL"
                },
                {
                    "clave": "LUGAR_EXPEDICION",
                    "valor": "CALI"
                }
            ]
        },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...