Dashing Meter читает файл Json и отправляет значение

Мне нужно отправить значение в лихой счетчик из файла json: Parse тоже не работает content = JSON.parse(file.read)

require 'json'


file = File.open('/mnt/json/process1.json')
contents = file.read

SCHEDULER.every '2s' do


  contents["poolused"] = { label: "poolused" , value: (contents["poolused"][:value])}
  send_event('synergy3',   { items: contents.values})

end

Это мой json-файл

{   
    "label":"value",
    "PoolName":  "SDS2_D2600-SAS-450G-15K",
    "poolpercent":  "70",
    "Date":  "07/23/2015 15:33:57",
    "pooltotal":  "3540529446912",
    "poolused":  "2466384969728"
}

Ошибка:

scheduler caught exception:
undefined method `[]' for nil:NilClass
/home/toto/dashboard_v2/jobs/sample.rb:22:in `block in <top (required)>'

person Vieira David    schedule 24.07.2015    source источник


Ответы (3)


Ваша переменная contents содержит строку JSON, считанную из файла. Чтобы преобразовать его в хеш, вам понадобится contents = JSON.parse(file.read)

person Glupo    schedule 24.07.2015
comment
Ошибка /opt/ruby/lib/ruby/gems/2.2.0/gems/json-1.8.3/lib/json/common.rb:155:in `parse': 757: неожиданный токен в '▒▒{' ( JSON::ParserError) - person Vieira David; 24.07.2015
comment
Как видно из сообщения об ошибке, когда вы читаете строку JSON из файла, вам что-то предшествует JSON '▒▒{'. Если вы каким-то образом поделитесь этим файлом JSON, я смогу понять, что не так. - person Glupo; 24.07.2015
comment
Спасибо Glupo, но я не могу поделиться файлом, все было заблокировано моим бизнесом, файл как наверху process1.json - person Vieira David; 24.07.2015
comment
Вот как это работает на моей стороне: pastebin.com/BkUixYeR Скопировал вышеуказанное содержимое json в файл. Что вам, вероятно, нужно сделать, так это проверить, что у вас есть внутри файла, и нежелательные символы gsub. - person Glupo; 24.07.2015
comment
Я поместил -encoding ASCII в свой скрипт powershell. и его запуск. потому что он был в UTF-16 и не работал. | ConvertTo-Json | Исходящий файл d:\process2.json -кодировка ASCII - person Vieira David; 27.07.2015

/opt/ruby/lib/ruby/gems/2.2.0/gems/json-1.8.3/lib/json/common.rb:155:in `parse': 757: unexpected token at '▒▒{' (JSON::ParserError)

Ошибка с:

file = File.open('/mnt/json/process1.json') 
contents = JSON.parse(file.read)        
person Vieira David    schedule 24.07.2015

Экспорт файла json с помощью powershell: «ASCII», а не UTF 16

 | ConvertTo-Json | Out-file d:\products\Dashing\json\process2.json -encoding ASCII

Отправить значение в тире

require 'json'


file = File.read('./process3.json')
counts = JSON.parse(file)

SCHEDULER.every '2s' do

  synergy14 = counts["poolused"]

  send_event('synergy3',   { value: synergy14} ) 

end
person Vieira David    schedule 27.07.2015