質問編集履歴

2

質問への追記1

2021/02/04 03:56

投稿

Leizi
Leizi

スコア8

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,128 @@
32
32
 
33
33
 
34
34
 
35
+ ### 追記1
36
+
37
+ > JSON 文字列のサンプルを書いて、それのどこで悩んでいるのか具体的に書いてもらえませんか? 今の質問内容ではそのあたりが分からないです。
38
+
39
+
40
+
41
+ jsonを送られてくる可能性として、配列の場合とそうでない場合があります
42
+
43
+ ```json
44
+
45
+ {
46
+
47
+ "LoginList": {
48
+
49
+ "LoginItem": [
50
+
51
+ {
52
+
53
+ "ID": "TEST01"
54
+
55
+ },
56
+
57
+ {
58
+
59
+ "ID": "TEST02"
60
+
61
+ }
62
+
63
+ ]
64
+
65
+ }
66
+
67
+ }
68
+
69
+ ```
70
+
71
+
72
+
73
+ ```json
74
+
75
+ {
76
+
77
+ "LoginList": {
78
+
79
+ "LoginItem": {
80
+
81
+ "ID": "TEST01"
82
+
83
+ }
84
+
85
+ }
86
+
87
+ }
88
+
89
+ ```
90
+
91
+ visual studioの機能でjsonからクラスを作成
92
+
93
+ ```C#
94
+
95
+ public class Rootobject
96
+
97
+ {
98
+
99
+ public Loginlist LoginList { get; set; }
100
+
101
+ }
102
+
103
+
104
+
105
+ public class Loginlist
106
+
107
+ {
108
+
109
+ public Loginitem LoginItem { get; set; }
110
+
111
+ }
112
+
113
+
114
+
115
+ public class Loginitem
116
+
117
+ {
118
+
119
+ public string ID { get; set; }
120
+
121
+ }
122
+
123
+ ```
124
+
125
+
126
+
127
+ しかしこのままだと配列ではない場合はデシリアライズが成功しますが、配列だとExceptionになります
128
+
129
+ 逆に```public List<Loginitem> LoginItem { get; set; }```にすると配列でない場合にExceptionになります
130
+
131
+
132
+
133
+ なのでそれを避けるために上記で記載したとおり```public object LoginItem { get; set; }```にするという記事を見つけました
134
+
135
+ ですが、obejctだとそのまま使用できないのでキャストが必要となるらしいのですが、
136
+
137
+ ![イメージ説明](db1b9bbcfa41a8dd0c223979a220a88e.png)
138
+
139
+
140
+
141
+ 配列ではないのならば下記のように持ち
142
+
143
+ ![イメージ説明](7b856b9236df1bebe8b8e108e9a9396d.png)
144
+
145
+
146
+
147
+ 配列なら下記のように持つことが出来ないのか
148
+
149
+ ![イメージ説明](b55ae3e8e6e6c2bb347ded2062b4da0d.png)
150
+
151
+
152
+
153
+ 上記のようにクラス自体はどうにもならないのであれば、LoginItem の中身を使用する際に都度キャストが必要なのかという内容です。
154
+
155
+
156
+
35
157
 
36
158
 
37
159
  ### 補足情報(FW/ツールのバージョンなど)

1

タイトル修正

2021/02/04 03:56

投稿

Leizi
Leizi

スコア8

test CHANGED
@@ -1 +1 @@
1
- 【C#】JSONのデシアライズで、配列の場合とそうでない場合の際の対処法が知りたい
1
+ 【C#】JSONのデシアライズで、配列の場合とそうでない場合の際の対処法が知りたい
test CHANGED
File without changes