Ruby on rails Rails应用程序:我需要从循环中的params构建一个json对象
我需要使用params在循环中构建一个json对象 我的情妇看起来像这样Ruby on rails Rails应用程序:我需要从循环中的params构建一个json对象,ruby-on-rails,json,loops,Ruby On Rails,Json,Loops,我需要使用params在循环中构建一个json对象 我的情妇看起来像这样 params[:answers] returns => {"1"=>"answer1", "2"=>"answer2"} def build_answersheet_json(params[:answers], params[:survey_id]) params[:answers].keys.each do |question_id| current_question = question
params[:answers]
returns => {"1"=>"answer1", "2"=>"answer2"}
def build_answersheet_json(params[:answers], params[:survey_id])
params[:answers].keys.each do |question_id|
current_question = question_id
current_answer = params[:answers][question_id]
end
end
{
survey_id: '1',
answers: {
question: [{
question_id: 1,
answer: 'answer1'
}, {
question_id: 2,
answer: 'answer2'
}]
}
}
build_answersheet_json(params[:answers], params[:survey_id])
这个json对象中的键是调查问题的id
所以我计划通过循环键来构建json对象,如下所示
params[:answers]
returns => {"1"=>"answer1", "2"=>"answer2"}
def build_answersheet_json(params[:answers], params[:survey_id])
params[:answers].keys.each do |question_id|
current_question = question_id
current_answer = params[:answers][question_id]
end
end
{
survey_id: '1',
answers: {
question: [{
question_id: 1,
answer: 'answer1'
}, {
question_id: 2,
answer: 'answer2'
}]
}
}
build_answersheet_json(params[:answers], params[:survey_id])
由于我在迁移过程中使用“t.json”将json保存到postgres,所以我想使用提取的问题id和答案来构建一个json对象,看起来像这样
params[:answers]
returns => {"1"=>"answer1", "2"=>"answer2"}
def build_answersheet_json(params[:answers], params[:survey_id])
params[:answers].keys.each do |question_id|
current_question = question_id
current_answer = params[:answers][question_id]
end
end
{
survey_id: '1',
answers: {
question: [{
question_id: 1,
answer: 'answer1'
}, {
question_id: 2,
answer: 'answer2'
}]
}
}
build_answersheet_json(params[:answers], params[:survey_id])
我一直试图用一种看起来像这样的方法来做这件事
params[:answers]
returns => {"1"=>"answer1", "2"=>"answer2"}
def build_answersheet_json(params[:answers], params[:survey_id])
params[:answers].keys.each do |question_id|
current_question = question_id
current_answer = params[:answers][question_id]
end
end
{
survey_id: '1',
answers: {
question: [{
question_id: 1,
answer: 'answer1'
}, {
question_id: 2,
answer: 'answer2'
}]
}
}
build_answersheet_json(params[:answers], params[:survey_id])
我尝试了JSON.parse(),并试图从逻辑上解决它,但我似乎无法解决这个问题
非常感谢您的帮助。如果Json的结构如下所示,则可能无法解析Json:
survey = {
}
Json不能包含=
和赋值
使用
puts varname检查实变量值。在遇到意外行为的代码行附近检查。如果Json具有如下结构,则可能无法解析Json:
survey = {
}
Json不能包含=
和赋值
使用puts varname检查实变量值。在遇到意外行为的代码行附近检查。也许您可以尝试以下方法:
/* fake params (to test) */
params = {
survey_id: '1',
answers: {
"1"=>"answer1",
"2"=>"answer2",
"3"=>"answer3",
"4"=>"answer4"
}
}
def build_answersheet_json(answers, survey_id)
{
survey_id: survey_id,
answers: answers.map { |k,v| { question_id: k.to_i, answer: v } }
}
end
survey = build_answersheet_json(params[:answers], params[:survey_id])
puts survey.class
#Hash
puts survey.to_json
# formated JSON string:
# {
# "survey_id":"1",
# "answers":[
# {"question_id":1,"answer":"answer1"},
# {"question_id":2,"answer":"answer2"},
# {"question_id":3,"answer":"answer3"},
# {"question_id":4,"answer":"answer4"}
# ]
# }
YourModel.create(survey: survey)
为了保存为t.json
postgress列类型,只需传递Hashsurvey
对象,如下所示:
/* fake params (to test) */
params = {
survey_id: '1',
answers: {
"1"=>"answer1",
"2"=>"answer2",
"3"=>"answer3",
"4"=>"answer4"
}
}
def build_answersheet_json(answers, survey_id)
{
survey_id: survey_id,
answers: answers.map { |k,v| { question_id: k.to_i, answer: v } }
}
end
survey = build_answersheet_json(params[:answers], params[:survey_id])
puts survey.class
#Hash
puts survey.to_json
# formated JSON string:
# {
# "survey_id":"1",
# "answers":[
# {"question_id":1,"answer":"answer1"},
# {"question_id":2,"answer":"answer2"},
# {"question_id":3,"answer":"answer3"},
# {"question_id":4,"answer":"answer4"}
# ]
# }
YourModel.create(survey: survey)
来源:也许你可以试试这样的东西:
/* fake params (to test) */
params = {
survey_id: '1',
answers: {
"1"=>"answer1",
"2"=>"answer2",
"3"=>"answer3",
"4"=>"answer4"
}
}
def build_answersheet_json(answers, survey_id)
{
survey_id: survey_id,
answers: answers.map { |k,v| { question_id: k.to_i, answer: v } }
}
end
survey = build_answersheet_json(params[:answers], params[:survey_id])
puts survey.class
#Hash
puts survey.to_json
# formated JSON string:
# {
# "survey_id":"1",
# "answers":[
# {"question_id":1,"answer":"answer1"},
# {"question_id":2,"answer":"answer2"},
# {"question_id":3,"answer":"answer3"},
# {"question_id":4,"answer":"answer4"}
# ]
# }
YourModel.create(survey: survey)
为了保存为t.json
postgress列类型,只需传递Hashsurvey
对象,如下所示:
/* fake params (to test) */
params = {
survey_id: '1',
answers: {
"1"=>"answer1",
"2"=>"answer2",
"3"=>"answer3",
"4"=>"answer4"
}
}
def build_answersheet_json(answers, survey_id)
{
survey_id: survey_id,
answers: answers.map { |k,v| { question_id: k.to_i, answer: v } }
}
end
survey = build_answersheet_json(params[:answers], params[:survey_id])
puts survey.class
#Hash
puts survey.to_json
# formated JSON string:
# {
# "survey_id":"1",
# "answers":[
# {"question_id":1,"answer":"answer1"},
# {"question_id":2,"answer":"answer2"},
# {"question_id":3,"answer":"answer3"},
# {"question_id":4,"answer":"answer4"}
# ]
# }
YourModel.create(survey: survey)
来源:试试看
{
survey: ¯\_༼◉ل͟◉༽_/¯,
}
试一试
对不起,调查={}不应该在那里。我只希望最后一个对象看起来像“=”后面的东西,我将编辑这个问题。对不起,调查={}不应该在那里。我只希望最后一个对象看起来像“=”后面的东西,我将编辑这个问题。这看起来很有希望。谢谢你的快速回复。我现在得睡觉了,明天早上我会把它做完的。谢谢!这很有效。谢谢你引用这篇文章!这看起来很有希望。谢谢你的快速回复。我现在得睡觉了,明天早上我会把它做完的。谢谢!这很有效。谢谢你引用这篇文章!