2017-09-25 15 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

まずとして使用することができ、あなたのカスタムクラスにJSONのプロパティをマップする必要があります、おそらくこれに類似したもの:

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は抽出されません。注意すべきは、入力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; } 
} 

そして、あなたは

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ごとに回答します。 –

関連する問題