2015-09-08 51 views
1

我對Ruby很新,我正在使用它與API協同工作。文本區域發送過來的API轉換爲格式的下方通過JSON POST請求被髮送到我面前:如何格式化通過JSON作爲數組發送的文本區域?

"Comment": [ 
     "hdfdhgdfgdfg\r", 
     "This is just a test\r", 
     "Thanks!\r", 
     "- Kyle" 
    ] 

而我所獲得的價值是這樣的:

comments = params["Comment"] 

所以每行被分解成看起來像一個數組。我的問題是,它的功能就像一個大字符串,而不是具有4個值的數組。我嘗試使用comments[0],只是打印comments但都返回相同的結果,它只是顯示的一切作爲一個字符串,即

["hdfdhgdfgdfg\r", "This is just a test\r", "Thanks!\r", "- Kyle"] 

但我需要它出現在文本區,即

hdfdhgdfgdfg 
This is just a test 
Thanks! 
- Kyle 
顯示它

我知道我可以刪除所有額外的字符,但我覺得必須有更好的方法。有沒有一種很好的方法可以將其轉換回文本區域的原始格式,或者至少將其轉換爲數組,以便我可以遍歷每個項目並重新格式化它?

+0

張貼的結果已經是一個數組,如果它不是一個數組,你可以將它分開回車評論[0] .split(「\ r」),你會得到每行 –

+0

這就是我的問題所在,它看起來像一個數組,但功能像一個字符串 – Kyle

+0

你可以發佈確切輸出的評論[0] –

回答

1

首先,擺脫那些醜陋\r S的:

comments.map!(&:chomp) 

然後,加入線條在一起:

comment = comments.join("\n") # using a newline 
# OR, for HTML output: 
comment = comments.join('<br>') 
+0

完美,這是做到了。非常感謝你! – Kyle

0

您應該能夠與所有的值來解析JSON和填充哈希:

require 'json' 

hash = JSON.parse(params["Comment"]) 

puts hash 

=> {"Comment"=>['all', 'of', 'your', 'values']} 

這應該爲所有有效的JSON工作。一個JSON語法規則是

數據是名稱/值對

您所提供的值不提供的名字,因此這種方法可能不工作的JSON。如果是這樣的話,解析原始字符串並提取值也可以完成這項工作(儘管更麻煩)。

你怎麼可能去這樣做:

json = params["Comment"] 
newArray = [] 

json.split(" ").each do |element| 
    if element.length > 1 
    newArray << element 
    end 
end 

這將至少給你所有的值的數組。

+0

我試過了,不幸的是它仍然給出了相同的結果 – Kyle

+0

對不起,已編輯我的回答 – nextstep

+0

謝謝,但仍然沒有運氣。 'params [「Comment」]'仍然被解釋爲一個字符串,即使它看起來像一個數組。 – Kyle

相關問題