前提・実現したいこと
cisco MERAKIのScanning APIを使いwifi proveしたJSONデータ情報をRailsで取得し、その情報の中にあるMACアドレスと用意しておいた個人情報の中のMACアドレスと照合し、合致すればその人の個人情報を出力するシステムを作っています
そこで、JSONで送られてきたデータを"clientMac"キーの値を配列化して一旦ビューで表示させたいのですが、JSONデータをどう呼び出せばいいのかわかりません。
”clientMac”キーの値を配列化するコード下記のようにするのはわかっています
hash['observations'].map {|o| o['clientMac']}
しかし、上記のhashの部分をどう呼び出すのかで詰まってます。
jsonデータは約1分置きに送られてきます
そのjsonをどう定義したらよいでしょうか?
jsonデータはeventsテーブルのdataカラムに格納するようにしています
送られてくるjson形式は下記のようになっております
{ "apMac": <string>, "apTags": [<string, ...], "apFloors": [<string>, ...], "observations": [ { "clientMac": <string>, "ipv4": <string>, "ipv6": <string>, "seenTime": <string>, "seenEpoch": <integer>, "ssid": <string>, "rssi": <integer>, "manufacturer": <string>, "os": <string>, "location": { "lat": <decimal>, "lng": <decimal>, "unc": <decimal>, "x": [<decimal>, ...], "y": [<decimal>, ...] }, },... ] }
Rails側では下記のように記述しております
ruby
1#app/controllers/events_controller.rb 2class EventsController < ApplicationController 3 skip_before_action :verify_authenticity_token 4 5 VALIDATOR = "66c06e9ac54b52f34f434074fbb1270d96344702" 6 7 def index 8 @events = Event.all 9 end 10 11 def show 12 end 13 14 def new 15 @event = Event.new 16 end 17 18 def edit 19 end 20 21def create 22 @event = Event.new(data: params[:data]) 23 24 respond_to do |format| 25 if @event.save 26 format.html { redirect_to @event, notice: 'Event was successfully created.' } 27 format.json { render :show, status: :created, location: @event } 28 else 29 format.html { render :new } 30 format.json { render json: @event.errors, status: :unprocessable_entity } 31 end 32 end 33 end 34end
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー