回答編集履歴

2

訂正

2019/04/03 10:22

投稿

退会済みユーザー
test CHANGED
@@ -182,4 +182,4 @@
182
182
 
183
183
 
184
184
 
185
- MiniJSON でのデシリアライズの結果の Dictionary<string, object> の入れ子のオブジェクト構造に頭を悩ますより、こちらの方がはるかに分かりやすいはずです。
185
+ MiniJSON でのデシリアライズの結果の Dictionary<string, object> の入れ子のオブジェクト構造に頭を悩ますより、こちらの方がはるかに分かりやすいはずです。

1

追記

2019/04/03 10:22

投稿

退会済みユーザー
test CHANGED
@@ -23,3 +23,163 @@
23
23
 
24
24
 
25
25
  構造が分かれば目的の項目をどのように取得できるか分かると思います。上の画像には「local」配下の「section」を文字列として取得するコードもありますので見てください。
26
+
27
+
28
+
29
+ **【追伸】**
30
+
31
+
32
+
33
+ 質問に対するコメントで、
34
+
35
+
36
+
37
+ > C# では一般的に使われている JavaScriptSerializer とか Json.NET は使わないという条件ですか?
38
+
39
+
40
+
41
+ と書きましたが、Json.NET ライブラリを使った方法を紹介しておきます。自分的にはこちらがお勧めです。
42
+
43
+
44
+
45
+ 問題はデシリアライズされる C# のクラス定義ですが、それは以下のようなサービスを利用すれば簡単です。
46
+
47
+
48
+
49
+ json2csharp
50
+
51
+ [http://json2csharp.com/](http://json2csharp.com/)
52
+
53
+
54
+
55
+ 簡易逆ジオコーディングサービス [https://www.finds.jp/rgeocode/index.html.ja](https://www.finds.jp/rgeocode/index.html.ja) のページの「実行例」のセクションの「近畿中国四国農業研究センター」の JSON をクリックすると応答として返ってくる JSON 文字列を上記 json2csharp を利用して C# のクラス定義を取得すると以下の通りとなります。
56
+
57
+
58
+
59
+ ```
60
+
61
+ public class Prefecture
62
+
63
+ {
64
+
65
+ public int pcode { get; set; }
66
+
67
+ public string pname { get; set; }
68
+
69
+ }
70
+
71
+
72
+
73
+ public class Municipality
74
+
75
+ {
76
+
77
+ public string mname { get; set; }
78
+
79
+ public int mcode { get; set; }
80
+
81
+ }
82
+
83
+
84
+
85
+ public class Local
86
+
87
+ {
88
+
89
+ public string section { get; set; }
90
+
91
+ public string homenumber { get; set; }
92
+
93
+ public double distance { get; set; }
94
+
95
+ public double latitude { get; set; }
96
+
97
+ public double longitude { get; set; }
98
+
99
+ }
100
+
101
+
102
+
103
+ public class Result
104
+
105
+ {
106
+
107
+ public Prefecture prefecture { get; set; }
108
+
109
+ public Municipality municipality { get; set; }
110
+
111
+ public List<Local> local { get; set; }
112
+
113
+ }
114
+
115
+
116
+
117
+ public class Argument
118
+
119
+ {
120
+
121
+ public double latitude { get; set; }
122
+
123
+ public double longitude { get; set; }
124
+
125
+ public int localradius { get; set; }
126
+
127
+ public int localmax { get; set; }
128
+
129
+ }
130
+
131
+
132
+
133
+ public class Meta
134
+
135
+ {
136
+
137
+ public string name { get; set; }
138
+
139
+ public string content { get; set; }
140
+
141
+ }
142
+
143
+
144
+
145
+ public class RootObject
146
+
147
+ {
148
+
149
+ public int status { get; set; }
150
+
151
+ public Result result { get; set; }
152
+
153
+ public Argument argument { get; set; }
154
+
155
+ public List<Meta> meta { get; set; }
156
+
157
+ }
158
+
159
+ ```
160
+
161
+
162
+
163
+ 上記が得られれば、Json.NET ライブラリを使って以下のコードで同じ結果が得られます。
164
+
165
+
166
+
167
+ ```
168
+
169
+ RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(jsonText);
170
+
171
+
172
+
173
+ foreach (Local local in rootObject.result.local)
174
+
175
+ {
176
+
177
+ Console.WriteLine(local.section);
178
+
179
+ }
180
+
181
+ ```
182
+
183
+
184
+
185
+ MiniJSON でのデシリアライズの結果の Dictionary<string, object> の入れ子のオブジェクトコ構造に頭を悩ますより、こちらの方がはるかに分かりやすいはずです。