先日 Java での JSON データの読み方を紹介しました。
ここでは C# で JSON データを読む方法を紹介します。
DataContractJsonSerializer を使った方法です。
DataContractJsonSerializer.ReadObject() を使うと JSON データを読み、オブジェクトとして出力してくれます。
オブジェクトへの変換が「宣言」となっているところがいくらか分かりやすいといえるでしょうか。
まず、読み込みたいデータ構造をクラスとして宣言し、DataContract 属性を付加します。JSON データは DataMember 属性を付加します。ネストされているデータはクラスとして宣言しDataContract 属性を付加します。コードを参照してください。#配列データは配列として宣言します。
出来上がったデータクラスを DataContractJsonSerializer のコンストラクタの引数として渡します。
準備が出来たらHttpWebResponse として読んできたデータを、DataContractJsonSerializer.ReadObject() で読み込みます。
と、この手順を踏むとめでたく JSON データが読み込めます。あとは出力するだけ。
ここの気温の表示はデフォルト設定でなんとK(ケルビン)です。ので 273.15 を引いてやります。
#華氏(℉)か摂氏(℃)か迷ったんでしょうか(もめたんですかね)。
火曜日, 6月 23, 2015
木曜日, 6月 11, 2015
コマンドラインでシカゴの気温を調べる(Java で JSON データを読む)
なんと、近々発表されるはずの Java 9 から JSON ライブラリが外されてしまいました。
これは、政治ですね?(笑・XML派の妨害ですね。)
JSON ってコンパクトですよね。名前なしの{}(中括弧)を使うところが XML 形式より多少なりとも不確実ではあっても記述が短くて済むわけです。
openweathermap サイトのデフォルト設定は JSON 出力です。
このサイトは天気情報を提供してくれます。都市名とかを URL で送ってやると天気情報を返してくれます。
そこで、「ねえ、パーサーを書いたら?」とかいう余計な手間をかけたくない忙しいプログラマのため org.json.simple ライブラリの使い方を紹介します。
まず JSON.simple JAR ファイルをダウンロード。
データを読み込むプログラムの手順を示します。
あとは、JAR ファイルとコンパイルするだけ。
これは、政治ですね?(笑・XML派の妨害ですね。)
JSON ってコンパクトですよね。名前なしの{}(中括弧)を使うところが XML 形式より多少なりとも不確実ではあっても記述が短くて済むわけです。
openweathermap サイトのデフォルト設定は JSON 出力です。
このサイトは天気情報を提供してくれます。都市名とかを URL で送ってやると天気情報を返してくれます。
そこで、「ねえ、パーサーを書いたら?」とかいう余計な手間をかけたくない忙しいプログラマのため org.json.simple ライブラリの使い方を紹介します。
まず JSON.simple JAR ファイルをダウンロード。
データを読み込むプログラムの手順を示します。
- まず、JSONParser オブジェクトをインスタンス化。
- URL オブジェクトから InputStreamReader、BufferedReader をインスタンス化。
- JSONParser.parse() でパース。
- あとは JSONParser.get() で要素を読んでいくだけです。
- ネストされている要素であれば、JSONParser オブジェクトとして扱う。
あとは、JAR ファイルとコンパイルするだけ。
javac -classpath "JARファイルのあるディレクトリ;." WeatherApp.javaこれで、コマンドラインからシカゴの気温が検索できます。
登録:
投稿 (Atom)
Qt: 外部プログラムを起動する
Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...
-
コンデンサマイク 極性があります コンデンサマイクがようやく届きました。モジュールではないのでそのままでは信号が弱いので使えません。信号を増幅する必要があります。 ちょっとした手間ですが、首尾よく動いてくれました。この回路の応用で、使えるマイクが出来ます。 ...
-
Flask/SQLAlchemy 使ってる方、jinja で困ってませんか? 本体で Python の関数を書いてもいいんですが、テンプレートでも関数が呼べます。 日付を出したい場合、フォーマットなら strftime() が使えます。 わざわざ文字列を作って渡す必...
-
PowerBuilder では Time, Date, DateTime などという型があります。 デフォルトの表示形式から変更する場合は String() 関数を使います。 String(Date('1/12/2016'),'yyyy-mm-dd...