Ruby shuffle方法不适用于json解析数组

时间:2014-06-11 22:48:59

标签: ruby json

我有一个像这样的json文件:

{
  "data": "12-14.02.2013",
  "uwagi": ["Pierwsza","Druga","Trzecia"],
  "tytul": "Kolokwium 1",
  "przedmiot": "Muzykologia",
  "questions" : [
    {
     "punkty": 2,
     "pytanie" : "Czy lubi Pan reggae?",
     "odpowiedz" : "Tak, bardzo",
     "verbatim" : "if (a){b=5}"
    },
    {
     "punkty": 3,
     "pytanie" : "Czy lubi Pan hip-hop?",
     "odpowiedz" : "Nieszczególnie"
    },
    {
     "punkty": 5,
     "pytanie" : "Czy lubi Pan disco polo?",
     "odpowiedz" : "Nie"
    }]
}

和像这样的ruby代码:

require 'json'

file = open("pytania.json")
json = file.read

parsed = JSON.parse(json)

questionsArr = parsed["questions"]
questionsArr.shuffle
puts questionsArr

questionsArr在.shuffle

之后没有排序

我尝试了.sort_by {rand}并改组解析["问题"],但没有成功。

出了什么问题?

1 个答案:

答案 0 :(得分:5)

你需要shuffle!数组!

require 'json'

file = open("pytania.json")
json = file.read

parsed = JSON.parse(json)

questionsArr = parsed["questions"]
questionsArr.shuffle!
puts questionsArr

单独的方法shuffle返回一个新的混洗数组,并且不会更改原始的questionsArr数组。因此,您应该使用将改变原始shuffle!数组的爆炸questionsArr方法,如上所示,或者将shuffle的结果放入新变量中并使用它,如下所示:

require 'json'

file = open("test.json")
json = file.read

parsed = JSON.parse(json)

questionsArr = parsed["questions"]
shuffledArr = questionsArr.shuffle
puts shuffledArr