KonifarPod

Backbone.jsでサーバーから返されたデータを扱いやすいようにparseする

   

Pocket

サーバーからJSONデータを受け取ってクライアントサイドで利用する際、返されたデータの型をそのまま扱えない場合があります。

例えばこんな感じでサーバーから返されるデータがresponseTextというkeyでネストされていた時などです。

Parse1

 

Backbone.jsを利用している場合、Modelのparseメソッドを利用するとデータを扱いやすいように整形することができます。

Backbone.Modelではnewする時に引数をparseメソッドに渡し、その返り値を元にモデルの属性値を設定します。そのparseメソッドをModelクラスでオーバーライドすることで、いい感じにJSONデータを変換します。

[CoffeeScript]

class padule.Models.Event extends Backbone.Model
  urlRoot: "/events"
  parse: (resp)->
    if resp.responseText
      resp.responseText
    else
      resp

padule.Models.Eventクラスのインスタンスをfetchするとサーバーから返されたJSONデータがparseの引数のrespに入ってきます。上の例だと、必要なJSONデータの中にresponseTextというkeyがあった場合にはresponseTextの中身をモデルの属性値にセットします。

本来はparseを利用しなくてもいいように設計するのが綺麗なんですが、どうしても仕様の差異をクライアントサイドで吸収しなければならなかったり、バージョン互換のためにデータを変換しなければならないことも往々にしてありますよね。そういう時はparseを使って綺麗にデータを扱いましょう。

Pocket

 - Develop