簡體   English   中英

反序列化返回所有值都設置為null的對象

[英]Deserialize returns object with all values set to null

String str ="{\"_id\":\"eta_emp_1\",\"_rev\":\"446-195e9341df50aeed33d2cb833420b100\",";
str+="\"channels\":[\"ch_pri-eta_org\"],\"doc_type\":\"emp\",\"downloaded\":true,";
str+="\"eta_code\":\"abhi\",\"f_name\":\"Abhilash\",\"isactive\":true,";
str+="\"isadmin\":true,\"l_name\":\"Dhondalkar\",";
str+="\"lat\":17.69967582522918,\"lon\":75.89857880026102,";
str+="\"m_name\":\"Dheeraj\",\"mod_at\":1494693566503,\"mod_by\":\"eta_emp_1\",";
str+="\"org_id\":\"eta_org\",\"pwd\":\"abcde\",";
str+="\"reported_by\":[\"e27f41e7-5b84-4c86-838e-97598b4d20a0\",\"8daa0901-f6e8-4fdd-b41c-658aa901899d\",";
str+="\"9bf72297-481c-4d59-a0f4-d5549cb60e27\",\"2e5ce994-2cfb-4e62-88f8-ff1d3a069ca0\"]}";

UserDetails userDetails = JsonConvert.DeserializeObject<UserDetails>(str);



 public class UserDetails
    {

    String _id{get;set;}
    String _rev { get; set; }
    String[] channels{get;set;} 
    String doc_type{get;set;} 
    bool downloaded{get;set;} 
    String eta_code{get;set;} 
    String f_name{get;set;}
    bool isactive { get; set; }
    bool isadmin { get; set; } 
    long l_name{get;set;}
    long lat{get;set;}
    String lon{get;set;}
    String m_name{get;set;}
    long mod_at{get;set;} 
    String mod_by{get;set;}
    String org_id{get;set;}
    String pwd{get;set;} 
    String[] reported_by{get;set;}
    }

所有值均設置為null。 無法找出問題。 PL幫助

該類應該工作:

public class UserDetails
{
        public string _id { get; set; }
        public string _rev { get; set; }
        public List<string> channels { get; set; }
        public string doc_type { get; set; }
        public bool downloaded { get; set; }
        public string eta_code { get; set; }
        public string f_name { get; set; }
        public bool isactive { get; set; }
        public bool isadmin { get; set; }
        public string l_name { get; set; }
        public double lat { get; set; }
        public double lon { get; set; }
        public string m_name { get; set; }
        public long mod_at { get; set; }
        public string mod_by { get; set; }
        public string org_id { get; set; }
        public string pwd { get; set; }
        public List<string> reported_by { get; set; }
}

更多幫助:

http://json2csharp.com

根據我以前對JSON.NET的經驗,將JSON轉換為正確的類可能會有些棘手。 上面的網站一直為我提供合適的課程。 唯一的例外是Wikipedia API,因為它是動態API,您需要做一些小技巧。

另外,請記住,所有屬性都必須是公共的,因為如果某些內容是私有的(例如您的問題),那么翻譯者或其他任何人都無法訪問它。 希望對您有所幫助。

可以將類中的所有屬性標記為public,或者將JsonProperty屬性顯式添加到每個屬性,如下所示:

public class UserDetails
    {
        [JsonProperty("_id")]
        String _id { get; set; }

        ...
    }

當使用Json Validator時,我得到“根JSON數據必須代表一個對象或數組”,因此表明您的JSON最有可能是不正確的。 這就是為什么不能將string序列化到您的類,而將屬性保留為null 您應該向我們展示您的序列化過程,以找出錯誤所在。

暫無
暫無

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

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