2017-06-12 56 views
0
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;} 
    } 

所有值均設置爲空。 無法找出問題。 Pl幫助將所有值設置爲空的反序列化返回對象

+1

你從哪裏得到你的'string'?通常當反序列化/序列化時,你不需要使用'str + =',因爲它通常只有一個'字符串'。 –

回答

0

當使用Json Validator時,我得到了「根JSON數據必須表示一個對象或數組」,因此表明您的JSON最不正確。 這就是爲什麼string無法序列化到您的課程,離開屬性null。 您應該向我們展示您的序列化過程以瞭解錯誤的位置。

+0

字符串是一個休息調用的響應。當我在str上快速觀看,並在Json visualizer中看到價值時,它完美展示。我甚至在線json查看器中檢查了json。這很好。 –

+0

這個「str」內容正是你所接受的內容嗎? – pitersmx

+0

@DheerajDhondalkar好吧,只是一個猜測。檢查Federico Navarretes是否適合您:) –

1

這個類應該工作:

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到正確的課程。上面的網站爲我提供了所有正確的課程。唯一的例外是維基百科API,因爲它是一個動態API,你需要做一些小技巧。

此外,請記住所有屬性必須公開,因爲如果某些內容是私人的(如在您的問題中),則翻譯程序或其他任何內容都無法訪問該內容。我希望這有幫助。

+0

從數組更改爲列表有幫助嗎? – pitersmx

+1

是否因爲屬性需要「公共」才能被序列化@Federico Navarrete? –

+1

嗨@ThFI,是的所有屬性必須是公開的,如果不是,它將無法找到它,但我強烈建議網站:json2csharp.com,它的問題較少。 –

1

要麼標誌着您的類中的所有屬性,公開,明確地或屬性JsonProperty添加到每個屬性,如下所示:

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

     ... 
    }