簡易逆ジオコーディングサービスを利用して、
緯度・経度から、住所を取得しようとしています。
以下のコードで、市町村までは取得できるのですが、
「local」配下の「section」が取得できません。
どのように取得できるのでしょうか。
(localは配列になっています。)
c#
1 // 結果JSONのデシリアライズ 2 var desirializedData = (Dictionary<string, object>)Json.Deserialize(www.text); 3 4 // 成功した場合のみ処理 5 if ((long)desirializedData["status"] == 200) 6 { 7 // 都道府県+市区町村を文字列として保持 8 var result = (Dictionary<string, object>)desirializedData["result"]; 9 var prefecture = (Dictionary<string, object>)result["prefecture"]; 10 var municipality = (Dictionary<string, object>)result["municipality"]; 11 var local = (Dictionary<string, object>)result["local"]; 12 //Address = (string)prefecture["pname"] + " " + (string)municipality["mname"]; 13 Address = (string)prefecture["pname"] + " " + (string)municipality["mname"] + " " + (string)local["section"] ; 14 } 15
戻り値のサンプルは以下の通りです。
※実際に使用しているのJSON版なのですが、文字化けしてしまうので、xml版を貼り付けました。
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<rgeocode xmlns="http://finds.jp/ts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 3 <status>200</status> 4 <result> 5 <prefecture> 6 <pcode>34</pcode> 7 <pname>広島県</pname> 8 </prefecture> 9 <municipality> 10 <mname>福山市</mname> 11 <mcode>34207</mcode> 12 </municipality> 13 <local> 14 <section>西深津町六丁目</section> 15 <homenumber>12</homenumber> 16 <distance>69.707053182466</distance> 17 <latitude>34.501616</latitude> 18 <longitude>133.384224</longitude> 19 </local> 20 </result> 21 <argument> 22 <latitude>34.5012296</latitude> 23 <longitude>133.384822</longitude> 24 <localradius>500</localradius> 25 <localmax>1</localmax> 26 </argument> 27 <meta name="thanks" content="このサービスは 国土交通省 提供 国土数値情報(行政区域) を利用しています" /> 28 <meta name="thanks" content="このサービスは 国土交通省 提供 街区レベル位置参照情報および大字・町丁目レベル位置参照情報 を利用しています" /> 29</rgeocode>``` 30 31 32【環境】 33unity(c#)
「取得できません」とのことですが、具体的にはどういうことでしょうか?(エラーが出る、nullになる、空文字になる等。エラーが出る場合はエラーメッセージを質問に追記お願いします)
また、小数点付きの数字か要素の個数が怪しいと思うのですが、distance,latitude,longitudeを削ったJSONを渡した場合はどうなりますか?(www.textの代わりに自作した文字列を渡してみてください)
簡易逆ジオコーディングサービスというのはこれ https://www.finds.jp/rgeocode/index.html.ja のことですか? このページの「実行例」のセクションの「近畿中国四国農業研究センター」の JSON をクリックすると応答として返ってくる JSON 文字列を C# のオブジェクトにデシリアライズして「local」配下の「section」が文字列として取得できればいいのですか?
よく見てみれば Unity の話で、デシリアライズするのに MiniJSON というライブラリを使っているようですね。それの使用は必須で、C# では一般的に使われている JavaScriptSerializer とか Json.NET は使わないという条件ですか?
回答1件
あなたの回答
tips
プレビュー