lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

SteamAPIを使ってユーザー情報をJson形式で受け取る

概要

Steam Web APIを使ってユーザー情報を取得してみた。
C#のWebRequest使ってこんな感じになりました。
Jsonとは何ぞやってとこから始めました。

f:id:HM_Atlas:20171010230346j:plainf:id:HM_Atlas:20171010230337j:plain

ソース

github.com

  • WebRequestにAPIキー仕込んだURLぶち込む
  • GetResponseでユーザー情報をJson形式で受け取って表示

ざっとこんな感じ

Json

受け取る形式はこんな感じ

{
  "response": {
    "players": [
      {
        "steamid": "76561197960435530",
        "communityvisibilitystate": 3,
        "profilestate": 1,
        "personaname": "Robin",
        "lastlogoff": 1507623682,
        "profileurl": "http://steamcommunity.com/id/robinwalker/",
        "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f1/f1dd60a188883caf82d0cbfccfe6aba0af1732d4.jpg",
        "avatarmedium": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f1/f1dd60a188883caf82d0cbfccfe6aba0af1732d4_medium.jpg",
        "avatarfull": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f1/f1dd60a188883caf82d0cbfccfe6aba0af1732d4_full.jpg",
        "personastate": 0,
        "realname": "Robin Walker",
        "primaryclanid": "103582791429521412",
        "timecreated": 1063407589,
        "personastateflags": 0,
        "loccountrycode": "US",
        "locstatecode": "WA",
        "loccityid": 3961
      }
    ]
  }
}

※リファレンスにあったSteamスタッフのアカウントの例

using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

上記2つを追加してやって
受け取るJson形式をクラス定義してやれば良い

ここで注意点として参照の追加でハマる可能性がある

ここまでのはまりポイント 最初、System.Runtime.Serialization.Json を用いるため、 System.Runtime.Serialization.Json が参照の追加にあると思った。 しかし、実際には System.Runtime.Serialization.Json は参照追加の項目には存在せず、 System.ServiceModel.Web を参照追加するのが正しい。

C#(VS2008)の標準機能のみでJSONを読み込む - posnum’s blog

雑感

特段ユーザー情報取得できたからと言って何のことはないのだが
CSプレイヤーが好きそうなのを作ってみようと思ってる。