我想要執行一個簡單的操作 - 將一些輸入文本轉換爲JSON,處理它,並進一步使用它。Ruby的gsub不會將 n視爲空白字符嗎?
require 'json'
aws_region = "us-east-1"
tag = `sudo aws ec2 describe-tags --region="#{aws_region}" --
filters "Name=resource-type,Values=instance" "Name=key,Values=Group"
"Name=resource-id,Values=$(ec2metadata --instance-id)"`
puts tag
tag_json = tag.to_json.gsub(/\s+/, "")
#tag_json = tag.gsub("\n", "")
puts tag_json
obj = JSON.parse(tag_json)
desired_value = obj["Tags"][0]["Value"]
puts desired_value
我期望上面的內容去除包括換行符在內的所有空格,但令我驚訝的是,輸出中仍然有換行符。 JSON.parse失敗,出現以下錯誤,因爲換行符仍然存在。通過上面的附加tag_json賦值,可以刪除換行符併成功。
JSON::ParserError
-----------------
746: unexpected token at '"{\n\"Tags\": [\n{\n\"ResourceType\":
\"instance\", \n\"ResourceId\": \"i-XXXXXX\", \n\"Value\":
\"groupA\", \n\"Key\": \"Group\"\n}\n]\n}\n"'
我最終不得不有一個單獨的案例換行。爲什麼gsub會將換行符視爲非空白字符?有沒有其他的表達方式可以將所有的空格,製表符和換行符結合起來,這樣我就可以將它們去掉了?
'tag'具體是什麼? 「tag_json」結束了什麼?你確定你正在使用'tag_json'嗎? 'gsub(/ \ s + /,'')'應該刪除換行符,以避免你沒有向我們顯示,最小的例子對每個人都有用。順便說一句,JSON中的換行符(或其他空格)沒有任何問題。 –
標記是你在那裏看到的,但是以純文本形式存在。我將在原始文章中添加一個更完整的示例。 –
用完整上下文更新原始文章。正如你所看到的,它沒有太大的不同。 –