Tag: json

Ruby json gem编码html实体

我在我的代码中创建了一个名为timeOffsets的哈希 @timeOffsets = Hash.new total=0 @sections.each do |i| @timeOffsets[i.shortcode] = total total+=i.length end 我使用to_json在Javascript中渲染它,: timeOffsets=; 但我用编码的HTML实体得到它: timeOffsets={"Introduction_to_Lists":0,"Removing_elements":693,"Joining__join_":1490}; 如何阻止它编码HTML实体?

使用YAML.load解析json是否安全?

我使用的是ruby 2.1.0 我有一个json文件。 例如:test.json { “item”:[ {“apple”: 1}, {“banana”: 2} ] } 使用YAML.load加载此文件是否安全? YAML.load(File.read(‘test.json’)) 我正在尝试加载json或yaml格式的文件。

在Ruby中自动将JSON对象映射到实例变量

我希望能够自动将JSON对象解析为实例变量。 例如,使用此JSON。 require ‘httparty’ json = HTTParty.get(‘http://api.dribbble.com/players/simplebits’) #=> {“shots_count”:150,”twitter_screen_name”:”simplebits”,”avatar_url”:”http://sofzh.miximages.com/ruby/dancederholm-peek.jpg?1261060245″,”name”:”Dan Cederholm”,”created_at”:”2009/07/07 21:51:22 -0400″,”location”:”Salem, MA”,”following_count”:391,”url”:”http://dribbble.com/players/simplebits”,”draftees_count”:104,”id”:1,”drafted_by_player_id”:null,”followers_count”:2214} 我希望能够这样做: json.shots_count 并输出: 150 我怎么可能这样做?

如何从JSON字符串中删除反斜杠?

我有一个JSON字符串,如下所示 ‘{\”test\”:{\”test1\”:{\”test1\”:[{\”test2\”:\”1\”,\”test3\”: \”foo\”,\”test4\”:\”bar\”,\”test5\”:\”test7\”}]}}}’ 我需要使用Ruby或Rails将其更改为下面的一个: ‘{“test”:{“test1”:{“test1”:[{“test2″:”1″,”test3”: “foo”,”test4″:”bar”,”test5″:”bar2″}]}}}’ 我需要知道如何删除这些斜杠。

Rails:attr_accessor在尝试呈现为JSON时不会显示

在我的应用程序中,我有一个模型在下面; class Init < ActiveRecord::Base attr_accessor :clientAvailability attr_accessible :returnCode, :returnMessage, :tokenCode, :updateURL end 在这里,当我稍后添加** attr_accessor **时,当我尝试应用** render json:init **时,即使我将其设置为;它也不显示** clientAvailability **属性; init=Init.new init.clientAvailability=”3″ 当我调试它时,我可以看到它已设置,但是当我尝试将其渲染为json时,它不会简单地显示出来。 可能是我错过的东西?

ruby:从嵌套的json中提取字段

我正在努力教自己ruby并解决工作中的问题。 我的最终目标是从API中提取JSON响应中的许多字段中的三个,操作并转储到CSV以进行执行报告。 JSON的结构是: { “status”: 200, “data”: { “total”: 251, “alerts”: [ { “dataPoint”: “x”, “ackedBy”: “x”, “dataSourceInstance”: “x”, “dataSource”: “x”, “host”: “x”, “endOn”: 0, “ackedOn”: 1385085190, “dataSourceInstanceId”: 588384, “hostId”: 935, “type”: “alert”, “dataSourceId”: 694, “ackedOnLocal”: “2013-11-21 17:53:10 PST”, “id”: 6170384, “startOn”: 1385084917, “thresholds”: “!= 1 1 1”, “endOnLocal”: “”, “level”: “error”, “ackComment”: “x”, “value”: […]

Rails 3使用自定义属性/方法response_to json

在rails应用程序中,我有一个动作,返回不同模型集合的json表示。 它看起来像这样: respond_to :json def index @cars = Car.all @vans = Van.all respond_with({ :cars => @cars, :vans => @vans }) end 但是,我想自定义传递给json对象的属性和方法。 有一点像: respond_with({ :cars => @cars.to_json(:only => [:make, :model], :methods => [:full_name]), :vans => @vans }) 执行上述操作后,会将“cars”的json表示转义为一个大字符串,如: { “cars”:”[{\”car\”:{\”make\”:\”Ford\” … etc “vans”: [{“van”:{“make”:”Citreon” … vans not escaped } 显然我正以错误的方式接近这一点。 谁能指出我正确的方向?

创建一个使用Sinatra的路由只接受某种内容类型

我正在尝试创建一个使用Sinatra的路由,它只接受带有Content-type: application/json POST Content-type: application/json但没有成功。 我的方法如下: post ‘/dogs’, :provides => :json do # returns here a json response end 使用curl进行测试,我已经看到:provides => :json配置路由以使用Content-Type: application/json进行响应。 这是正确的,因为我还希望用POST请求的JSON消息进行响应,但我真的需要这条路由只响应具有Content-Type: application/json POST请求,而不是响应其他人(例如Content-Type: application/xml )。 在Sinatra中是否有任何方法限制路由只接受具有特定Content-Type请求?

Ruby使用JSON序列化struct

我试图将一个简单的结构序列化为JSON,它工作正常,但我不能让它从JSON创建该结构的实例。 这是我试图这样做的方式。 require ‘rubygems’ require ‘json’ Person = Struct.new(:name, :age) json = Person.new(‘Adam’, 19).to_json puts json me = JSON.load(json) puts me.name 我得到以下输出: “#” /usr/lib/ruby/1.9.1/json/common.rb:148:in `parse’: 746: unexpected token at ‘”#”‘ (JSON::ParserError) from /usr/lib/ruby/1.9.1/json/common.rb:148:in `parse’ from /usr/lib/ruby/1.9.1/json/common.rb:309:in `load’ from why.rb:9:in `’

rails字段是JSON对象的数组?

我有一个Damage表,其中包含以下字段: 描述 date_of_damage 我想添加另一个字段来存储Damagepoints ,这些JSON对象看起来像这样: { top: 50, left: 100 } 顶部和左侧是damagepoint上damagepoint的坐标。 用户使用Javascript添加/删除damagepoints点。 但是,我想在一个字段中存储这些damagepoints的数组,如下所示: @damage.damagepoints = [{left: 40, top: 99}, {left: 100, top: 35}, {left: 150, top: 95}] 我不想使用具有has_many关系的Damagepoint表来执行此操作,因为对此的所有更改都将使用Javascript完成,如果用户创建或删除了Damagepoints ,我只想从客户端传递更新damagepoints组,并用新数组替换数据库中的旧数据库。 如果我使用has_many关系,我必须删除所有的Damagepoints并在每次更新数组时创建每个新点(因为它太复杂了,删除/添加特定的损坏点没有任何好处,因为我不喜欢我需要追踪历史)。 存储@damage.damagepoints (上图)等数据的最简单方法是什么? 我需要做的只是将它(通过控制器)传递给html5数据属性,以便Javascript可以使用它将现有的damagepoints添加到图表中(基于它们的坐标),然后传递更新的数组(当来自html5数据属性)当用户单击“保存”按钮时,通过AJAX调用返回控制器。 我正在使用Rails 4.2和Postresql。 谢谢!