【问题标题】:Remove slash from string in ruby on rails在 ruby​​ on rails 中从字符串中删除斜线
【发布时间】:2020-05-09 04:38:55
【问题描述】:

我需要从下面的字符串中删除“\”

{\"MACAddress\":\"74:5E:78\",\"DeviceName\":\"Connected_Device\"}

响应应该是

{"MACAddress":"74:5E:78","DeviceName":"Connected_Device"}

我需要检查字符串是否包含“\n”,我需要添加验证以删除“\”

您能帮忙在 Rails 中如何处理这个问题吗?

目前我在代码下面使用httpparty

        reqType = params['reqType']
         payLoadData = params['payLoadData']

        p "PAYLOAD DATA-------------- #{payLoadData}"
        if reqType == "post"
          start = Time.now
        url=params['url']
        body_param= device 
        p "payLoadData-------------- #{body_param}"

        response = HTTParty.post(url,
         :body => body_param,
         :headers => {'Content-Type' => 'application/json','User-Agent'=> 'Auto',"Authorization" => 'Basic=='})
        result_hash["response"].push({"body": response.body.to_s, "response_time": response_time.to_s})
        result_hash["status"].push(response.code)


【问题讨论】:

  • 您的字符串看起来像一个有效的 JSON 哈希。它从何而来?为什么需要操纵它?我解析和使用 Ruby 哈希是一个选项?
  • 我从 ajax 获得此响应并作为 payLoadData = params['payLoadData'] 传递。此有效负载数据值与 \.
  • 你怎么知道字符串已经转义了双引号?你确定你没有看到String#inspect 输出吗?比较 puts '"string"'puts '"string"'.inspect 以了解字符串实际包含的内容与您可能看到的内容之间的区别。
  • 你能给出包含\n 字符和其他``的特定json,以及它的预期输出吗?仅从您的解释中,我无法弄清楚您正在寻找的确切字符串处理。
  • 如果response.body已经是JSON,那你就不要response.body.to_s了。

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

JSON.parse("{\"MACAddress\":\"74:5E:78\",\"DeviceName\":\"Connected_Device\"}")

它应该可以解决问题

【讨论】:

  • 谢谢。但是我得到了来自 ajax 的响应,并像 payLoadData = params['payLoadData'] 一样传递。这个有效载荷数据带有 \value
  • 我试过这个 payLoadData.gsub!(/\"/, '\'')。但是得到这个 {'MACAddress':'74:5E:78','DeviceName':'Connected_Device '}
  • @SubashiniRaja 这表明字符串中没有\",只有"String#inspect 或类似名称表示为\"
  • @SubashiniRaja 还有其他你做错的事情。您根本不需要为此在任何地方执行gsub
【解决方案2】:

您从 Ajax 调用获得的响应是​​ JSON 格式的哈希。

只需使用 JSON 解析器将 JSON 字符串转换为 Ruby 哈希:

require 'json'

pay_load = params['payLoadData']
device = JSON.parse(pay_load)

device['MACAddress']
#=> "74:5E:78"
device['DeviceName']
#=> "Connected_Device"

当您只想输出哈希时,一个简单的puts device<%= device %>(取决于您的上下文)应该可以工作。因为在这两种情况下,to_s 都会在内部对哈希进行调用。

【讨论】:

  • 谢谢。我正在使用 httparty。Payload 数据包含任何 json 值。它可能会有所不同。我已经更新了内容。请检查。
  • 这非常奇怪,因为 HTTParty 会自动将 JSON 响应解析为 Ruby 哈希。 API 是否有可能多次返回部分响应?当负载以 JSON 格式发送到 API 并且 API 只是将其发送回另一个 JSON 结构但不关心负载的内部格式时,可能会发生这种情况。您使用什么 API?解析前的纯 JSON 响应是什么样的?
  • 顺便说一句,如果 JSON 可以包含任何 JSON 值,您打算如何在您的应用程序中使用它?只打印为 JSON 字符串?
  • 是的。打印为 Json 值。之前它工作正常。现在我看到了这个问题。
  • 我刚刚更新了我的答案:一个简单的puts device<%= device %>(取决于你想打印该值的位置和方式)应该可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 2011-11-16
  • 1970-01-01
  • 2015-03-28
相关资源
最近更新 更多