Xamarinで入れ子のJSONデータ処理 @勝手に自習編
Xamarin業務でJSONデータへのアクセスを実装しなければならないのだけれど先達が作った既存の方法をそのまま真似してもうまく行かず。
コリャヤベェゾワケワカラン((((;゚Д゚))))ガクガクブルブル
[やりたいこと]
・サーバから受け取った、入れ子のJSONデータを適当に変換して、パラメータに素早くアクセスしたい。
↓↓↓ サーバから受け取る情報例
string response = “{“A”:”a” , “B”:”b” , “C”:”c” , “D”:[{“E”:”e” , “F”:”f” , “G”:”g”}]}”
[達成度]
100% デキターヽ(▽^〃ヽ)ヽ(〃^▽^〃)ノ(ノ〃^▽)ノ ワーイワーイワーイ♪
[おこなったこと]
入れ子の情報になっていて、A、B、CとDの下に E、F、Gがぶら下がる形になってるだけ。なんでできないのか、自分でも不思議な状況…。
できない具合としては、DeserializeObject(response)をして、A、B、C、Dの辞書型は作れるのに、同じようにDの下の情報をデシリアライズしようとしたら、例外が発生するとか。イミワカラン。
・VisualStudio2017@windowsの環境修正。
Newtonsoft.Jsonのインストールでコケる。なぜ機能拡張とは別のメニュー項目なのか…。
そしてAndroidエミュレータの遅さが不満。100倍速にならんかな┐(´д`)┌
・VisualStudio版では、JSONデータ(文字列)をメニュー>形式指定してペーストで、クラス(GET/SET持ってるだけ)に変換できる!便利すぎだろこれ!
↓こんなんが自動でできる。
public class Rootobject
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public D[] D { get; set; }
}
public class D
{
public string E { get; set; }
public string F { get; set; }
public string G { get; set; }
}
・ひたすらトライ&エラー
参考URL:
https://components.xamarin.com/view/json.net
https://techinfoofmicrosofttech.osscons.jp/index.php?JSON%E3%81%AEparse%E3%82%92%E8%89%B2%E3%80%85%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%E3%80%82#vf3529ba
http://qiita.com/tsgkdt/items/3e108b2b6c7f2a7e0b21
[反省]
↓2点が全くイメージできていなかった模様
・一発目のDeserializeObjectで、入れ子部分が”オブジェクト”としてGETできること
・Dが配列であること
上の例でいえば、
dict1 = DeserializeObject(response)
dict1.D[0].E とすれば、値 e を得ることができるんだぞ。と。
・ん?D以下の情報も、辞書型になるのか?なりそうだな?
[反省に対するアクション・予定]
無駄に疲れたわー。