-1

私はルビーで続編とjsonの宝石を使用しています

レコードをjsonオブジェクトに変換してそのフィールドを取得しようとすると、コードは次のようになります。

require 'json'
require "rubygems"
require "sequel"
require 'yaml'
require "sequel/extensions/pg_array"

DB = Sequel.connect('postgres://ritesh:newpassword@localhost')

pokes=DB[:use];
car = {:make => pokes.all, :year => "2003"}
cp = pokes.filter(:id =>1).first.inspect

jj = cp.to_json
puts jj
parseObject = JSON.parse(cp)

最後の行でエラーが発生しています

"{:id=>1, :first_name=>\"Ritesh\", :last_name=>\"Mehandiratta\", :email=>\"riteshmehandiratta@gmail.com\", :zipcode=>\"127021\", :comapnay_name=>\"heroku\", :google_profile=>\"google\", :skype=>\"helloworld\", :phone=>\"9013895056\", :about=>\"i am a great person\", :linkedin_profile_url=>\"linkedin.com\", :comapny_url=>\"company.com\", :needs=>[\"Web Designer\", \"Web Developer\", \"SoftWare Developer\"], :offering=>[\"Web Designer\", \"Web Developer\", \"SoftWare Developer\"], :upcoming_meetings=>[1, 2, 3, 4], :past_meetings=>[1, 2, 3, 4], :top_matches=>[1, 2, 3, 4]}"
/home/ritesh/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/json/common.rb:148:in `parse': 743: unexpected token at '{:id=>1, :first_name=>"Ritesh", :last_name=>"Mehandiratta", :email=>"riteshmehandiratta@gmail.com", :zipcode=>"127021", :comapnay_name=>"heroku", :google_profile=>"google", :skype=>"helloworld", :phone=>"9013895056", :about=>"i am a great person", :linkedin_profile_url=>"linkedin.com", :comapny_url=>"company.com", :needs=>["Web Designer", "Web Developer", "SoftWare Developer"], :offering=>["Web Designer", "Web Developer", "SoftWare Developer"], :upcoming_meetings=>[1, 2, 3, 4], :past_meetings=>[1, 2, 3, 4], :top_matches=>[1, 2, 3, 4]}' (JSON::ParserError)
    from /home/ritesh/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/json/common.rb:148:in `parse'
    from hello1.rb:15:in `<main>'

答えで提案されているように、このようにjj変数を解析するとき

jj = cp.to_json
puts jj
parseObject = JSON.parse(jj)

その後、エラーが発生します

"{:id=>1, :first_name=>\"Ritesh\", :last_name=>\"Mehandiratta\", :email=>\"riteshmehandiratta@gmail.com\", :zipcode=>\"127021\", :comapnay_name=>\"heroku\", :google_profile=>\"google\", :skype=>\"helloworld\", :phone=>\"9013895056\", :about=>\"i am a great person\", :linkedin_profile_url=>\"linkedin.com\", :comapny_url=>\"company.com\", :needs=>[\"Web Designer\", \"Web Developer\", \"SoftWare Developer\"], :offering=>[\"Web Designer\", \"Web Developer\", \"SoftWare Developer\"], :upcoming_meetings=>[1, 2, 3, 4], :past_meetings=>[1, 2, 3, 4], :top_matches=>[1, 2, 3, 4]}"
/home/ritesh/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/json/common.rb:148:in `parse': 743: unexpected token at '"{:id=>1, :first_name=>\"Ritesh\", :last_name=>\"Mehandiratta\", :email=>\"riteshmehandiratta@gmail.com\", :zipcode=>\"127021\", :comapnay_name=>\"heroku\", :google_profile=>\"google\", :skype=>\"helloworld\", :phone=>\"9013895056\", :about=>\"i am a great person\", :linkedin_profile_url=>\"linkedin.com\", :comapny_url=>\"company.com\", :needs=>[\"Web Designer\", \"Web Developer\", \"SoftWare Developer\"], :offering=>[\"Web Designer\", \"Web Developer\", \"SoftWare Developer\"], :upcoming_meetings=>[1, 2, 3, 4], :past_meetings=>[1, 2, 3, 4], :top_matches=>[1, 2, 3, 4]}"' (JSON::ParserError)
    from /home/ritesh/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/json/common.rb:148:in `parse'
    from hello1.rb:15:in `<main>'

文字列のみのjjのcpの代わりに

'{:id=>1
'"{:id=>1

2つのエラーに注意してくださいが、エラーは同じです

このパーサー例外エラーが発生する理由これは有効なjson文字列です。これをハッシュに変換する必要があります。ハッシュに変換する方法とこのエラーを修正する方法を教えてください

4

1 に答える 1

0

cpではなくjjを解析したいと思います...

jj = cp.to_json
puts jj
parseObject = JSON.parse(jj)
于 2013-02-01T19:22:56.133 に答える