簡體   English   中英

將JSON對象反序列化為數組或列表

[英]Deserializing JSON object to array or list

我仍然不確定要問什么,所以很抱歉這是不正確的。 我發現的其他問題與人們已經在使用JSON接收對象數組有關。

當我只將JSON字符串作為數組返回時,我的JSON字符串從第三方作為對象返回,該數組過去很容易轉換為對象。

var success = JsonConvert.DeserializeObject<RootObjectClass>(result); gives me a `Cannot deserialize the current JSON object (e.g. {\"name\":\"value\"}) into type 'System.Collections.Generic.List`

我應該將其轉換為數組嗎?如果這樣,將如何轉換為對象,因為這些對象分別與屬性“ contact_id”值相同?

否則,有人可以為我指出最佳實踐的正確方向,即如何從此JSON中獲取聯系人列表。

JSON結構如下所示。

{
    "status": true,
    "error_code": "",
    "error_message": "",
    "data": {
        "693": { // Contact obj, always the same as contact_id
            "contact_id": "693",
            // removed lots of properties for brevity
            "real_name": "Mike Hunt",
            "telephone": "01280845867",
            "email": "mhunt@test.com"
        },
        "767": { 
            "contact_id": "767",
            "real_name": "Peter File",
            "telephone": "02580845866",
            "email": "pfile@test.com"
        }
    }
}

類結構

[Serializable()]
[DataContract]
public class RootObjectClass
{
    [DataMember()]
    public bool status { get; set; }
    [DataMember()]
    public string error_code { get; set; }
    [DataMember()]
    public string error_message { get; set; }
    [DataMember()]
    public DataClass data { get; set; }
}
[Serializable()]
[DataContract]
public class DataClass
{
    [DataMember]
    public Contact contact { get; set; }
}

您可以將data屬性反序列化為字典

[Serializable()]
[DataContract]
public class RootObjectClass
{
    [DataMember()]
    public bool status { get; set; }
    [DataMember()]
    public string error_code { get; set; }
    [DataMember()]
    public string error_message { get; set; }
    [DataMember()]
    public Dictionary<string,Contact> data { get; set; }
}

然后您可以選擇如下聯系人:

var contacts = rootObject.data.Values.ToList();

暫無
暫無

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

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