Tag: 杰森

如何从JSON字符串中访问值?

我有一个变量。 当我puts var_name我得到这个哈希: “{\”numConnections\”: 163}” 但是,当我尝试从值numConnections获取该数字163时,它无效。 这是我正在尝试的: connections = temp_var[“\”numConnections\””] puts connections.inspect 要么: connections = temp_var[“numConnections”] puts connections.inspect 两者同样不起作用。 知道如何从那里提取163吗?

处理Ruby中的许多

在纯ruby脚本中我有这个: result = JSON.parse result.body_str count = result && result[“ke1”] && result[“ke1”][“key2”] && result[“ke1”][“key2”][“key3”] && result[“ke1”][“key2”][“key3”][“key4”] ? result[“key1”][“key2”][“key3”][“key4”].to_i : 123 有什么方法可以简化这个吗?

使用内置的Ruby JSON库反序列化JSON基元

为什么Ruby的内置JSON不能反序列化简单的JSON原语,我该如何解决它? irb(main):001:0> require ‘json’ #=> true irb(main):002:0> objects = [ {}, [], 42, “”, true, nil ] #=> [{}, [], 42, “”, true] irb(main):012:0> objects.each do |o| irb(main):013:1* json = o.to_json irb(main):014:1> begin irb(main):015:2* p JSON.parse(json) irb(main):016:2> rescue Exception => e irb(main):017:2> puts “Error parsing #{json.inspect}: #{e}” irb(main):018:2> end irb(main):019:1> end {} [] Error parsing […]

在Ruby中使用分层JSON生成扁平JSON(denormalize)的最佳方法

我正在努力实现以下目标。 我的输入JSON看起来像这样, { “data”:{ “shipping_address”:[ { “cust_id”:”CUST-123″, “street”:”123 Main St”, “city”:”Atlanta”, “state”:”GA”, “zip”:”12345″ }, { “cust_id”:”CUST-456″, “street”:”456 Front St”, “city”:”Philadelphia”, “state”:”PA”, “zip”:”23456″ } ], “orders”:[ { “cust_id”:”CUST-456″, “items”:[ { “quantity”:”2″, “item_code”:”ABC-111-222″, “cust_id”:”CUST-456″ }, { “quantity”:”1″, “item_code”:”DEF-999-01-001″, “cust_id”:”CUST-456″ } ] }, { “cust_id”:”CUST-123″, “items”:[ { “quantity”:”10″, “item_code”:”998-111-222″, “cust_id”:”CUST-123″ } ] } ], “payment”:[ { “cust_id”:”CUST-123″, “type”:”VISA”, […]

将类的Ruby数组转换为JSON

我有一个Ruby数据结构: class Albums attr_accessor :title, :url def initialize(title, url) @title = title @url = url end end class Albumlist < Albums attr_accessor :id, :albums def initialize(id) @id = id @albums = Array.new end end 我制作了一个Albumlist数组,看起来像(使用.inspect方法): [#<Albumlist:0x8db6390 @id="abc",@albums=[ #, # ]>, #<Albumlist:0x8f4042c @id="def", @albums=[ # ]> ] 我不确定这个数组是否正常但是一旦我在这个数组上使用了.to_json或JSON.generate()方法,我得到的只有: [“#”,”#”] 看起来Ruby返回对象实例的“引用”。 我想用JSON转换这个数组,看起来应该是这样的 [ { “id”:”abc” “albums”:[ { […]

将Ruby数组解析为JSON

我有一些结果: puts result 看起来像这样的输出: Allowed 20863963 1554906 Denied 3607325 0 Quarantined 156240 0 调试 p results 产量 [[“Allowed”, 20863963, 1554906], [“Denied”, 3607325, 0], [“Quarantined”, 156194, 0]] 标题是: status,hits,page_views 我需要将其转换为json。 如果结果是标准的csv格式,那么它将是直截了当的,但如果结果格式如上所示,如何处理它? 预期输出与此类似: [{“status”:”Allowed”,”hits”:”20863963″,”page_views”:”1554906″},{“status”:”Denied”,”hits”:”3607325″,”page_views”:”0″},{“status”:”Quarantined”,”hits”:”156240″,”page_views”:”0″}] 解 a = result.map{|s| {status: s[0], hits: s[1].to_i, page_views: s[2].to_i} } puts a.to_json

为什么我得到“没有将String隐式转换为Integer(TypeError)”?

我有一些代码,我在非常类似的情况下运行。 这是第一个情况,我有一部电影的imdb_id我想要的细节: url = “http://mymovieapi.com/?id=#{self.imdb_id}&type=json&plot=none&episode=0&lang=en-US&aka=simple&release=simple&business=0&tech=0” doc = Hpricot(open(url)).to_s json = JSON.parse(doc) puts json puts json[“imdb_id”] 这给出了以下结果: {“rating_count”=>493949, “genres”=>[“Drama”, “Romance”], “rated”=>”PG-13”, “language”=>[“English”, “French”, “German”, “Swedish”, “Italian”, “Russian”], “rating”=>7.6, “country”=>[“USA”], “release_date”=>19980403, “title”=>”Titanic”, “year”=>1997, “filming_locations”=>”Santa Clarita, California, USA”, “imdb_id”=>”tt0120338”, “directors”=>[“James Cameron”], “writers”=>[“James Cameron”], “actors”=>[“Leonardo DiCaprio”, “Kate Winslet”, “Billy Zane”, “Kathy Bates”, “Frances Fisher”, “Gloria Stuart”, “Bill Paxton”, “Bernard […]

在Ruby / Sinatra中解码Facebook签名的请求

由于Facebook贬低了新的FBML,我正在寻找一种新的方式来创建一个“揭示”标签(一个页面选项卡,向粉丝显示一个版本,向非粉丝显示另一个版本)。 Facebook已将数据添加到signed_request: 当用户在左侧菜单中选择您的应用程序时,该应用程序将接收带有一个附加参数页面的JMS数组的signed_request参数,该数组包含您的Tab所在的Facebook页面的“id”,布尔值(’ likes’)表示用户是否喜欢Page,还有一个布尔值(’admin’)表示用户是否是Page的’admin’以及用户信息数组。 我能够读取signed_request,但是我需要使用base64url解码来处理它以获得正确的JSON。 另外,我在研究中发现JSON格式不正确,因此需要在解码之前对其进行修改。 这是当前的代码(我现在只是在index.erb中打印已签名的请求): helpers do def base64_url_decode str encoded_str = str.gsub(‘-‘,’+’).gsub(‘_’,’/’) encoded_str += ‘=’ while !(encoded_str.size % 4).zero? Base64.decode64(encoded_str) end def decode_data str encoded_sig, payload = str.split(‘.’) data = ActiveSupport::JSON.decode base64_url_decode(payload) end end get ‘/’ do signed_request = params[:signed_request] @signed_request = decode_data(signed_request) erb :index end 我正在努力保持应用程序尽可能轻,避免使用完整的Facebook库,因为这不是一个完整的应用程序(只是一个选项卡),不需要用户的任何其他权限。 我也欢迎任何关于我的风扇探测方法的建议。

如何使用ruby迭代这个json文档?

我有一个ruby代码块,如下所示: require “elasticsearch” require “json” search_term = “big data” city = “Hong Kong” client = Elasticsearch::Client.new log: true r = client.search index: ‘candidates’, body: { query: { bool: { must: [ { match: { tags: search_term } }, { match: { city: city } } ] } } } 它会像这样产生多个回报: {“_index”:”candidates”,”_type”:”data”, “_id”:”AU3DyAmvtewNSFHuYn88″, “_score”:3.889237, “_source”:{“first”:”Kota”,”last”:”Okayama”,”city”:”Tokyo”,”designation”:”Systems Engineer”,”email”:”user@hotmail.co.jp”,”phone”:”phone”,”country”:”Japan”,”industry”:”Technology”,”tags”:[“remarks”,”virtualization […]

将json解析为对象ruby

我查看了不同的资源,但仍然对如何将json格式解析为自定义对象感到困惑 class Resident attr_accessor :phone, :addr def initialize(phone, addr) @phone = phone @addr = addr end end 和JSON文件 { “Resident”: [ { “phone”: “12345”, “addr”: “xxxxx” }, { “phone”: “12345”, “addr”: “xxxxx” }, { “phone”: “12345”, “addr”: “xxxxx” } ] } 什么是将json文件解析为3 Resident对象数组的正确方法?