2015-10-22 56 views
0

我想綁定json obect到我的屬性當我反序列化json對象並綁定到屬性中時,屬性顯示空值,請有人幫我解決這個問題。如何在Windows Phone 8.1中反序列化json對象?

這是我的代碼

string s = "{\"response\":{\"status\":\"fail\",\"content\":{\"user_id\":\"56\",\"first\":\"kiran\",\"last\":\"kumar\",\"username\":\"kirankumar\"},\"msg\":\"shggh\"}}"; 

var jsonObj = JObject.Parse(s); 

response myDeserializedObj = (response)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonObj.ToString(), typeof(response)); 

這是性質

public class response 
{ 
    public string status { get; set; } 
    public content content { get; set; } 
} 

public class content 
{ 
    public string user_id { get; set; } 
    public string first { get; set; } 
    public string last { get; set; } 
    public string username { set; get; } 
} 

感謝, KARTHIK

回答

0

試試你的JSON與http://json2csharp.com/。 您當前的代碼將反序列化下面的JSON:

{ 
    "status":"fail", 
    "content":{ 
     "user_id":"56", 
     "first":"kiran", 
     "last":"kumar", 
     "username":"kirankumar" 
    }, 
    "msg":"shggh" 
} 

你缺少一個單一的屬性「響應」與我複製你的代碼,並在我的機器上測試它的類型爲「響應」

1

根類我可以解決你的問題 這裏是解決方案

添加下面的類

public class ResponseWrapper 
{ 
    public response response { get; set; } 
} 

重將您的代碼與以下內容

我相信這會起作用。

UPDATE

另一種解決方案(這也是測試)和更好比第一個 因爲它更乾淨,並以這種方式你沒有創建新的包裝類。

解決方法是用以下字符串替換您的字符串。

和您先前所有的代碼將留在這裏同 是正確的JSON字符串

string s = "{\"status\":\"fail\",\"content\":{\"user_id\":\"56\",\"first\":\"kiran\",\"last\":\"kumar\",\"username\":\"kirankumar\"},\"msg\":\"shggh\"}"; 

更新2

在下面這個答案的評論

你問一個完全新的問題。 這裏是你的新問題(我複製這從您的意見)

public class responseWraper 
{ 
    public response response { get; set; } 
} 

public class response 
{ 
    public string status { get; set; } 
    public content content { get; set; } 
} 

public class content 
{ 
    public Employees Employees { get; set; } 
} 

public class Employees 
{ 
    public string Employee_id { get; set; } 
    public string Employee_name { get; set; } 
    public string status { get; set; } 
}  

,這裏是你如何嘗試反序列化這個(也該從你的意見覆制)

string s = "{\"response\":{\"status\":\"success\",\"content\":{\"Employees\":[{\"Employee_i‌​d\":\"1\",\"Employee_name\":\"Sravan\",\"status\":\"1\"},}]}}}"; 
response my = Newtonsoft.Json.JsonConvert.DeserializeObject<responseWraper>(s).response; 

ANSWER 您的代碼有兩個問題

第一個是您正在使用Employees作爲JSON字符串中的數組,但的類型屬性不是數組

第二個問題是JSON字符串本身無效。它有一個錯誤 有4個{字符,但你有5個}字符在裏面。

所以你必須要解決這兩個問題,下面

public class content 
{ 
    public List<Employees> Employees { get; set; } 
} 

和字符串是

string s = "{\"response\":{\"status\":\"success\",\"content\":{\"Employees\":[{\"Employee_id\":\"1\",\"Employee_name\":\"Sravan\",\"status\":\"1\"},]}}}"; 

enter image description here

,如果您有任何其他的問題,我會很高興幫助你:)

+0

感謝Hakam,很好的解決方案。它爲我工作。 – kathik

+0

我希望你使用第二種解決方案,而不是第一種解決方案,它確實更乾淨,我們可以認爲它更正確。如果這個答案真的解決了你的問題,你可以把它標記爲可接受的答案,這將有助於其他有類似問題的人。很高興,這對你:) –

+0

好吧哈卡姆,同樣以及我嘗試了另一個字符串,但我得到錯誤爲什麼你可以告訴我 – kathik