2017-09-25 65 views
-2

以下片段是Json響應。我想將它綁定到自定義類。 因爲我是json的新手,請有人建議我如何做到這一點。如何將json數據綁定到自定義類

{"status":"success", 
"studentInfo":{"RegNo":"ABCD","ID":"123", 
     "parentsDetails":[ 
    {"Parent_Name":"Anny","Gender":"M"}, 
    {"Parent_Name":"Danny","Gender":"F"}], 
     "Student_Name":"Alex", 
     "Student_Status":"Active"} 
} 
+1

作爲一個起點。我建議把這個結構寫成一系列C#類,並閱讀反序列化。 –

+0

我會建議[json2csharp](http://json2csharp.com/)從json自動生成類。 –

+0

上面的鏈接是拋出錯誤。你能用一個例子發表答案嗎? –

回答

1

第一,也許類似這樣:

public class Student 
{ 
    public string status { get; set; } 
    public string studentInfo { get; set; } 
    //and so on... 
} 

然後,我建議你使用JSON.NET(Newtonsoft)來幫助你處理JSON數據。實際的反序列化可能會是這個樣子:

Student myStudentData = JsonConvert.DeserializeObject<Student>(yourInputJson); 

myStudentData會給你訪問到您的自定義類中定義的所有JSON屬性。另外,請注意,只有您在自定義類中定義的屬性纔會被映射。例如,即使你的JSON包含類似errorCode屬性的東西,如果你沒有在你的Student類中定義它,它也不會被提取。另一件你應該注意的事情是,如果你的輸入JSON不包含你在類中定義的屬性之一,那麼反序列化將會拋出一個異常。因此,例如,如果您輸入的信息不包含status屬性,則會收到異常。

1

這裏是你的JSON對象生成的類:

public class ParentsDetail 
{ 
    public string Parent_Name { get; set; } 
    public string Gender { get; set; } 
} 

public class StudentInfo 
{ 
    public string RegNo { get; set; } 
    public string ID { get; set; } 
    public List<ParentsDetail> parentsDetails { get; set; } 
    public string Student_Name { get; set; } 
    public string Student_Status { get; set; } 
} 

public class RootObject 
{ 
    public string status { get; set; } 
    public StudentInfo studentInfo { get; set; } 
} 

而且,你需要將JSON屬性映射到您的自定義類,你可以使用它作爲

string json = @"{'status':'success', 'studentInfo':{'RegNo':'ABCD','ID':'123','parentsDetails':[{'Parent_Name':'Anny','Gender':'M'},{'Parent_Name':'Danny','Gender':'F'}],'Student_Name':'Alex','Student_Status':'Active'} }" 
RootObject jsonObject = JsonConvert.DeserializeObject<RootObject>(json); 
+1

這不回答這個問題。這是回答問題所需的一半。如果您想完全回答,請展開如何反序列化到此類中。僅僅在沒有他們的情況下向他人提供代碼並不是一個好主意,至少可以證明他們自己嘗試了一些東西。最好把人們指向自己可以學習的地方。 –

+1

根據@DavidWatts的答案。 –

相關問題