【问题标题】:Deserialize xml list of objects反序列化xml对象列表
【发布时间】:2020-10-31 13:14:36
【问题描述】:
             <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": []
        }

是的,它是一个 json,因为我把它变成了一个 c# 对象,所以我可以在之后用 newstonsoft 进行序列化。请帮忙。

这是我的 Dni 课程:

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

【问题讨论】:

    标签: c# .net xml serialization xmlserializer


    【解决方案1】:

    所以我发现我所做的解决方案是将我的 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"
                    }
                ]
            },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 2013-09-24
      相关资源
      最近更新 更多