2012-08-17 98 views
0

我正在運行一些rails代碼來生成json以供骨幹使用。當我像字符串一樣對待id並在骨幹中使用它時,toJSON()函數不會返回屬性。當我在id上調用to_i時,toJSON()可以正常工作。 (但是,這打破了我的應用程序,因爲 「」 是從12345Backbone toJson在id爲字符串時不返回屬性

我的骨幹看法不同:

serialize: -> 
     console.log @model.toJSON() 
     info: @model.toJSON().info 

非工作JSON響應:

{"id":"123456","info":[{"label":"Hire Date","text":"06-NOV-00"},{"label":"User ID","text":"YADDA"},{"label":"Employee Number","text":"123456"}] } 

非工作的toJSON結果:

data_partition: DataPartition 
id: "123456" 
__proto__: Object 

工作JSON:

{"id":123456,"info":[{"label":"Hire Date","text":"06-NOV-00"},{"label":"User ID","text":"YADDA"},{"label":"Employee Number","text":123456}] } 

工作的toJSON():

data_partition: DataPartition 
id: 123456 
info: Array[3] 
__proto__: Object 

但是這打破了我的Rails應用程序時,我砍了領先的0。

回答

0

運行這段代碼,我沒有發現任何問題:

var responseJSON_1 = {"id":"123456","info":[{"label":"Hire Date","text":"06-NOV-00"},{"label":"User ID","text":"YADDA"},{"label":"Employee Number","text":"123456"}] }; 
var responseJSON_2 = {"id":123456,"info":[{"label":"Hire Date","text":"06-NOV-00"},{"label":"User ID","text":"YADDA"},{"label":"Employee Number","text":"123456"}] }; 

var MyModel = Backbone.Model.extend({}); 
var myModel_1 = new MyModel(responseJSON_1); 
var myModel_2 = new MyModel(responseJSON_2); 

console.log(myModel_1.toJSON()); 
console.log(myModel_2.toJSON());​ 

檢查working jsFiddle

你確定你是不是在你的迴應比id格式改變更多的事情?

+0

看起來最右邊的「文本」字段也在正在工作的json中取消了字符串。我懷疑前導零也會被切斷。所以是的,除了id在給定的例子中改變。 – 2012-08-17 14:50:50

+0

我們從來沒有想過這一點,但解決它是我們的JavaScript堆棧中的其他東西。我們最終只是使用一個整數來保持一致性,然後將其格式化爲一個字符串,並在前面的0處填入我們需要的字符串。 – hog 2012-10-06 22:29:39

相關問題