
実現したいこと
- GETリクエストを出し、リターン内容を変数に格納したい
概要
- ASP.NET Core 使用
- GETリクエスト 200 OK
- フォーマット例
JSON
1{ 2 "Name": "太郎", 3 "Code": 32, 4 "SubjectScores": [Array] { 5 "Subject": "数学", 6 "Score": 87 7 }, 8}
質問
- 上記のGETリクエストを受信するためにModelsに下記の形で定義しました。
Models
1namespace Sample.Models{ 2 public class PersonalInfo { 3 public string Name; 4 public int Code; 5 public SubjectScores subjectScores; 6 } 7 8 public class SubjectScores { 9 public string Subject; 10 public int Score; 11 } 12}
Controller
1Stream personalInfoStream = /*GETリクエストを出す関数 200 OK*/; 2Models.PersonalInfo personalInfo; 3var personalInfoSerializer = new DataContractJsonSerializer(typeof(Models.PersonalInfo)); 4personalInfo = ( Models.PersonalInfo ) personalInfoSerializer.ReadObject( personalInfoStream );
上記コーディングでpersonalInfoにJSONで取得したGETリクエストの結果が入ってくると思いましたが、実際は各項目がnullでした。
原因として推測しているのは以下です。
- Modelsでの定義の仕方が正しくない
- JSONを変数に移すためにはDataContractJsonSerializerの他に必要な処理がある
そうであればどのように記述する必要があるのか教えていただけませんでしょうか。
よろしくお願いいたします。

全く意味不明。ネタとかではないかと疑われるレベルですけど・・・。

意味不明な最たるところを書いておきますので、本気で問題・課題を解決したいなら、それを参考に質問を書き直して下さい。
表題の、
> GETリクエストのリターン内容を変数に格納したい
から「概要」までを読むと、やりたいことは、
(1) クライアントから HTTP GET 要求を出すと ASP.NET Core Web アプリが「概要」に書いてあるような JSON 文字列を返すので、それをクライアント側で受けてデシリアライズしてクライアントアプリの変数に格納したい。
・・・と思ったが、「質問」以降を読むと、
(2) クライアントから「概要」に書いてある JSON 文字列を送信し(であれば、GET ではなく POST とすべきだが)、ASP.NET Core Web アプリでそれを受けて C# のオブジェクトにデシリアライズして Controller のアクションメソッドの引数に渡したい。
・・・と思われ、質問が矛盾&意味不明になってます。
まず、(1) or (2) どっちなのかを書く。(1) ならクライアントのアプリが何なのかを書く、(2) なら GET でなく POST に直す。「概要」の JSON 文字列が正しくないので見直す。Model も正しくないので見直す。DataContractJsonSerializer など使わないのでそこも見直す・・・ということを、質問欄を編集して書いてください。