簡體   English   中英

反序列化 xml 對象列表

[英]Deserialize xml list of objects

             <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”對象時,你可能會看到它們不是只為他們封裝在 object 中,如果我嘗試在 model 中創建一個列表,它在反序列化后保持為空,這就是我得到的:

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

是的,它是 json 因為我把它變成了 c# object 所以我可以在之后用 newstonsoft 序列化。 請幫忙。

這是我的 Dni Class:

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

所以我發現我所做的解決方案是將我的 dni class 更新為以下內容:

[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"
                }
            ]
        },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM