Tag: json

在to_json方法中使用Rails“错误的参数数量(1为0)”

可能重复: 在Rails 2.3.5中覆盖to_json LIB / responses.rb module Responses class Response def to_json JSON.pretty_generate(self) end end class ErrorResponse < Response def initialize(cause) self[:type]="Error" self[:casue]=cause end end class DataResponse < Response attr_accessor :data end end 这由控制器使用: response=Responses::DataResponse.new response.data=someData render :json => response 现在我在lib/responses.rb:3:in to_json得到错误wrong number of arguments (1 for 0) 。 为什么? 传递给to_json参数没有被render :json隐式调用。 那我的错误在哪里?

有没有办法使用HashWithIndifferentAccess序列化ActiveRecord的JSON属性?

我在Rails应用程序中使用ActiveRecord::ConnectionAdapters::PostgreSQLAdapter 。 假设我有一个架构: create_table “foo”, id: :bigserial, force: :cascade do |t| t.string “name” t.jsonb “data”, null: false end 现在假设我运行以下代码: class Foo ‘foobar’, :data => {:a => ‘hello’}) my_foo = Foo.where(:name => ‘foobar’).first! puts my_foo.data[:a] puts my_foo.data[‘a’] 输出将是: # nil # ‘hello’ 是否可以让ActiveRecord使用HashWithIndifferentAccess自动反序列化jsonb类型?

Rails 3.2,处理损坏的请求体(MultiJson :: DecodeError)

我正在研究Rails 3.2.11应用程序(MRI 1.9.3)。 它的PArt是一个Web服务,它接收带有JSON序列化主体的POST请求。 一切正常,但我希望它能够抵御错误的格式化请求,例如无效的JSON。 现在,如果它收到一个JSON – 比方说 – 缺少一个逗号,它将返回一个500错误,其中包含默认rails错误视图的HTML响应(加上dev中的回溯)。 我想自定义它以返回带有错误信息的JSON或XML响应。 错误是MultiJson::DecodeError ,我知道我可以在ApplicationController中使用rescue_from捕获exception……但它似乎不起作用。 这就像错误发生在正常请求流之外。 这是我的代码(一旦我开始工作,我将使用更多数据扩展错误消息): class ApplicationController “the request body was not acceptable” } respond_to do |format| format.html { redirect_to :root, notice: “invalid params” } format.xml { render :xml => @response, status: 400 } format.json { render :json => @response, status: 400 } end end […]

使用最大行长度简洁地序列化JSON

所以我正在生成一个可能冗长的JSON字符串,用于Sendgrid的SMTP API。 因为它作为SMTP标头,它应该有一个最大行长度(建议72,但绝对不超过1000)。 一个天真的解决方案在最后的文档中描述: http://docs.sendgrid.com/documentation/api/smtp-api/developers-guide/ 他们建议这样做: $js =~ s/(.{1,72})(\s)/$1\n /g; 但我不喜欢这样,因为它可以在空格有意义的字符串内分割。 此外,当空间很少而且很远时,表现似乎可能非常糟糕。 现在我正在使用Ruby,我可以做类似的事情: JSON.generate(@hash, options) 其中选项提供了http://flori.github.com/json/doc/classes/JSON.html#method-i-generate中记录的不同格式选项。 但是这些都没有给我我想要的东西,这是每隔一段时间用简化线条简洁的JSON。 有任何想法吗?

Rails抛出“REXML :: ParseException没有有效的根”exception

我有一个JavaScript对象,并使用Douglas Crockford的JSON实用程序将其转换为JSON。 在发送后AJAX请求时,我得到: REXML :: ParseException没有有效的根 REXML::ParseException (The document “{\”name\”:\”asda\”,\”deadline\”:\”May 24, 2011\”}” does not have a valid root): 我无法继续此错误。

覆盖Rails中的MIME类型

我想在Rails中覆盖JSON MIME类型(“application / json”)(“text / x-json”)。 我试图在mime_types.rb中再次注册MIME类型,但这不起作用。 有什么建议? 谢谢。

TypeError – 没有将nil隐式转换为String Sinatra

我的代码看起来像这样。它是在将字段提取到哈希后将json数据上传到数据库中。 但我在log_extractor.rb的JSON.parse(json_data)行中得到’TypeError – 没有将nil隐式转换为String’ upload_results.erb: $( “form” ).submit(function( event ){ var fileoutput = reader.result; //$(“#upload_button”).click(function(){ $.ajax({ url:’/file_upload’, type : “POST”, data: { fileoutputid: fileoutput }, dataType: ‘json’, success: function(response) { }, failure: function(response){ } }); }); server.rb post ‘/file_upload’ do file_data = params[:fileoutputid] @uploaderobj.fileUpload(file_data) end log_extractor.rb @data_hash = JSON.parse(json_data) @data_hash[‘test_results’].keys.length end

Rails收集JSON数据并将其呈现到Highcharts图中

我试图将标签传递到x轴上的Highcharts柱形图。 目前图表的工作原理是它渲染数据,但x轴标签显示0,1,2,3 …等,这是没有任何渲染时的默认值。 notes_controller: def dashboard @data = Note.getData() end note.rb def self.getData data = [] self.subject_types.each do |type| data << self.type_count(type) end data end private def self.subject_types pluck(:subject_type).uniq end def self.type_count(type) where(subject_type: type).count end end dashboard.html.erb javascript …series: [{ name: ‘Number of Notes By Class Module’, data: }]… 以上作品很棒,但我如何才能展示标签? 它们应该来自我的表中名为subject_type的列。 我尝试过以下方法: note.rb: def self.getSubjects […]

在JSON / XML中渲染非activerecord对象

我正在使用ruby gem whois测试一个小的whois API,并且由于whois响应的格式非常有趣,有时我被要求不使用ActiveRecord来保存响应。 简单地说,这是它的工作原理: 用户从视图中输入表单中的域名(操作’lookup’=创建请求) 控制器捕获参数然后通过实例化请求对象[包含whois响应]发送到模型(非activerecord) Model使用whois gem并将回复发送回控制器 Controller以不同的格式(html / json / xml)发送响应,但只有html获取对象。 这是我的控制器“请求”的动作“查找”的代码: def lookup domain = params[:domain] @request = Request.new.search(domain) respond_to do |format| if @request != nil format.html format.json { render :json => @request} format.xml {render :xml => @request} else format.html { render :new } format.json { render json: @request.errors, status: :unprocessable_entity […]

为什么Time.strptime()返回当前日期?

向私有(无公共文档)API发出GET请求以JSON格式返回数据。 我感兴趣的价值是日期。 它以ASP.NET JSON日期格式返回日期。 这是它的样子: AanmeldDatum: “/Date(1406675114000+0200)/” 还有一个名为AangebodenSindsTekst的变量,意思是OfferedSinceText,它的值是“8 augustus 2014”。 因此,未知的Date格式应该被解析为该特定值。 我试过这个: require ‘time’ foo = Time.strptime(‘1406675114000+0200’, ‘%N’) # => 2014-08-12 13:38:46 +0200 foo = Time.strptime(‘1406675114000+0200’, ‘%N%z’) # => 2014-08-12 14:38:58 +0200 但它只是返回当前时间。 我知道100%肯定/Date(1406675114000+0200)/解析时,应该返回日期2014-07-30 。 问题是我该如何确定它呢?