前提・実現したいこと
下記サイトで、配列とそうではい場合はobject型で受けて別途キャストが必要と記載されていましたが(下記画像)、
これは値を使用する際に毎回キャストが必要なんでしょうか?
object型になっている部分そのものをキャストして持てるんでしょうか?(クラス自体のキャスト)
public object api_get_meateriak → public List<int> api_get_meateriak
うまく伝わっているかわかりませんが、デシアライズしたクラスにキャスト後の値を持てるのかということです。
クラスを使う際に
「ApiData.api_get_meateriak(object)」ではなく「ApiData.api_get_meateriak(List<int>)」として使えるのか
宜しくお願いします。
http://www2.hatenadiary.jp/entry/2013/12/14/030112
追記1
JSON 文字列のサンプルを書いて、それのどこで悩んでいるのか具体的に書いてもらえませんか? 今の質問内容ではそのあたりが分からないです。
jsonを送られてくる可能性として、配列の場合とそうでない場合があります
json
1{ 2 "LoginList": { 3 "LoginItem": [ 4 { 5 "ID": "TEST01" 6 }, 7 { 8 "ID": "TEST02" 9 } 10 ] 11 } 12}
json
1{ 2 "LoginList": { 3 "LoginItem": { 4 "ID": "TEST01" 5 } 6 } 7}
visual studioの機能でjsonからクラスを作成
C#
1 public class Rootobject 2 { 3 public Loginlist LoginList { get; set; } 4 } 5 6 public class Loginlist 7 { 8 public Loginitem LoginItem { get; set; } 9 } 10 11 public class Loginitem 12 { 13 public string ID { get; set; } 14 }
しかしこのままだと配列ではない場合はデシリアライズが成功しますが、配列だとExceptionになります
逆にpublic List<Loginitem> LoginItem { get; set; }
にすると配列でない場合にExceptionになります
なのでそれを避けるために上記で記載したとおりpublic object LoginItem { get; set; }
にするという記事を見つけました
ですが、obejctだとそのまま使用できないのでキャストが必要となるらしいのですが、
配列ではないのならば下記のように持ち
配列なら下記のように持つことが出来ないのか
上記のようにクラス自体はどうにもならないのであれば、LoginItem の中身を使用する際に都度キャストが必要なのかという内容です。
補足情報(FW/ツールのバージョンなど)
Visual Studio2019
.Net Core 3.1
C#
Newtonsoft.Json
回答3件
あなたの回答
tips
プレビュー