2011-08-26 54 views
36

我有輸入數據,這是我存儲在變量messages什麼是JSON八位字節,爲什麼需要兩個?

connection = ContextIO::Connection.new(key, secret) 
messages = connection.all_messages(:account => account, :limit => 100, :since => (Time.now - 3000.day)) 

可變messages在JSON被格式化。然後我執行此操作:

foo = JSON.parse(messages)['data'] 

大多數情況下,這是有效的。現在每一次,我收到此錯誤信息:

A JSON text must at least contain two octets! 

該錯誤消息則指的是線路JSON.parse(messages)['data']

  1. 什麼是八位?

  2. 爲什麼JSON文本必須包含至少兩個八位字節?

  3. 如何防止我的代碼打破每次messages沒有兩個字節?

謝謝!

回答

45
  1. 一個八位長字節是一組8位組成。今天,八位字節與字節是同義詞,但字節在歷史上被稱爲任何「本地」比特分組,這可能意味着4,6,7或8比特。
  2. JSON文本必須包含至少兩個八位字節,因爲JSON文檔的頂層結構是一個數組或對象,以及那些的最短表示被[]{},分別。
  3. 檢查值messages。它可能是空的,未設置或由一個數字組成(如4),它是而不是有效的JSON,但被許多JSON實現所接受。
6

雖然我完全同意對方的回答一致,在我來說,我有一個有效的JSON字符串,但仍然收到「JSON文本必須至少包含兩個字節」錯誤消息試圖JSON.parse時。

我的問題是,我不指定內容類型的application/json。一旦我補充說,JSON.parse工作沒有錯誤。

希望這可以幫助別人。

+1

Stephen,這正是我需要的!你在哪裏添加了「application/json」這一行? – Casey

相關問題