【问题标题】:Transferring HTML documents with JSON responses. Rails传输带有 JSON 响应的 HTML 文档。导轨
【发布时间】:2011-09-20 13:03:38
【问题描述】:

最近我遇到了解析 JSON 响应的问题,其中包含 html 注入。

 [{"Date":"\/Date(1316445326553+0400)\/",
 "Dishes":null,"Id":103,"Name":"Menutka уже с Вами!",
 "PictureId":130144,
 "TextHtml":"<!DOCTYPE html PUBLIC '-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN' 'http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd'>\u000a<html xmlns='http:\/\/www.w3.org\/1999\/xhtml'>\u000a<head>\u000a... etc",
 "Type":1,"UserId":1,"UserName":"Администратор"}]

并尝试执行JSON.parse response.body,其中响应正文是我的 JSON。它默默地服从,但返回空集合。我试图在this site 上验证这个 json,它说“它是有效的”

所以我对出了什么问题有点困惑。

PS 这是我的解析方法:

   def self.get(uri)
raw_url = BASE_URL+uri
url = "#{BASE_URL}"+CGI::escape(uri)
f = File.open('response.log', 'a')
start = Time.new
f.print "#{start.to_s}\t#{uri}"
resp = Net::HTTP.get_response(URI.parse(url))
stop = Time.new
f.puts "\t\t#{stop-start} seconds"
f.close
data = resp.body
begin
  if data.blank? or data.include?('<html')
    return {}
  end
  object = JSON.parse(data)
rescue JSON::ParserError
  raise Exceptions::NothingReturned, "GET Error on #{raw_url}"
end
end

【问题讨论】:

  • 你能贴出你实际解析 JSON 响应的代码吗?

标签: html ruby-on-rails ruby json parsing


【解决方案1】:

我不太确定这是否那么简单,但如果您的 JSON 包含 &lt;html 标签,您是否故意返回 {}?你想要什么行为?

如果要区分 html 和 json 响应,只需使用 Content-Type 响应头

【讨论】:

  • 我有 json 响应,其中只有一个 html 块。
猜你喜欢
  • 1970-01-01
  • 2014-07-04
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 2020-05-17
相关资源
最近更新 更多