Создать JSON одного измерения Ruby - PullRequest
0 голосов
/ 01 июля 2011

Я хочу иметь это:

["(GKA) ГОРОКА, ГОРОКА, ПАПУА НОВЫЙ GUINEA "]

вместо:

[ [ "(GKA)", "Goroka", "Goroka", "ПАПУА - НОВАЯ ГВИНЕЯ" ]]

Пока у меня есть этот код:

@aeropuertos = ""
    f = File.open("./public/aeropuertos/aeropuertos.cvs", "r")
    f.each_line { |line|
      fields = line.split(':')

      if (fields[2] == "N/A")
        @line =  "(" << fields[1] << ")" << ",," << fields[3] << "," << fields[4]
      else
        @line =  "(" << fields[1] << ")"  << "," << fields[2] << "," << fields[3] << "," << fields[4]
      end
      @aeropuertos += @line << "\n"
    }
    return CSV.parse(@aeropuertos).to_json

Что мне делать?

Ответы [ 2 ]

1 голос
/ 01 июля 2011

@ aeropuertos = ""

f = File.open("./public/aeropuertos/aeropuertos.cvs", "r")
f.each_line { |line|
  fields = line.split(':')

  if (fields[2] == "N/A")
    @line =  "(" << fields[1] << ")" << ",," << fields[3] << "," << fields[4]
  else
    @line =  "(" << fields[1] << ")"  << "," << fields[2] << "," << fields[3] << "," << fields[4]
  end
  @aeropuertos += @line << "\n"
}
res = []
CSV.parse(@aeropuertos).each do |c|
    res << c.join(',')
end
return res.to_json
0 голосов
/ 01 июля 2011

Нет необходимости в парсере CSV. Просто создайте желаемую структуру, читая каждую строку. То есть вместо создания большой строки в @aeropuertos и ее анализа с помощью синтаксического анализатора CSV создайте @aeropuertos массив и добавьте каждый @line в массив.

Итак, вместо этого:

@aeropuertos += @line << "\n"

Сделайте это:

@aeropuertos << @line

Но обязательно скажите это в начале:

@aeropuertos = []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...