如何使用PG gem解码JSON字段?

时间:2016-01-19 20:22:37

标签: ruby postgresql pg

我正在使用PG。我有一个表格,其中包含JSON类型的列。查询表很简单,但我不确定如何解码JSON字段:

$pg.exec('SELECT id, meta FROM users') do |result|
  result.each do |row|
    puts row['meta']
    Oj.load(row['meta'])
  end
end

row['meta']字段不包含有效的JSON,因此Oj.load引发了错误。通过PG gem解码JSON字段的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

该列的类型为json[],解码方式为:

decoder = PG::TextDecoder::Array.new
$pg.exec('SELECT id, meta FROM users') do |result|
  result.each do |row|
    meta = decoder.decode(row['meta'])
    meta.each do |meta_entry|
      puts Oj.load(meta_entry)
    end
  end
end

这需要pg gem版本18。*