2017-01-04 3 views
0

Я пытаюсь написать файл JSON для highcharts-convert/phantomJS динамически с помощью python. У меня есть действительный original.json, который работает. Когда я использую эту простую программу, чтобы привести ее с помощью json.load, а затем json.dump его в data.json - data.json генерирует ошибку!JSON для высокой диаграммы, импортированной с json.load сгенерированной ошибкой при использовании json.dump

import json 

with open('orignal.json') as data_file: 
    data = json.load(data_file) 

with open('data.json', 'w') as outfile: 
    json.dump(data, outfile, indent=4, separators=(',',':'), ensure_ascii=True) 

Вот ошибки я получаю, когда phantomjs/Highcharts-convert.js читает:

SyntaxError: Unexpected token ':' 
TRACE: 
-> phantomjs://code/data.js: 2 (in function "injectJs") 
-> phantomjs://code/highcharts-convert.js: 637 (in function "injectResources") 
-> phantomjs://code/highcharts-convert.js: 808 
-> phantomjs://platform/webpage.js: 286 (in function "_onPageOpenFinished") 

    phantomjs://code/highcharts-convert.js:723 in onError 
Exited with message 'ERROR: SyntaxError: Unexpected token ':'' 

Вот является original.json: http://pastebin.com/fAXtmHTc

и вот json.dump data.json: http://pastebin.com/mXjeNYug Что пошло не так? Помимо заказа, они кажутся одинаковыми!

+0

Я спас «плохой» JSON на диск, прочитать его в phantomjs 2.1.1 с помощью fs.read и JSON.parse разобраны без ошибок. – snakecharmerb

+0

@snakecharmerb im using phantomjs highcharts-convert.js -infile data.json -outfile chart.png, и я получаю сообщение об ошибке, пытающееся сделать диаграмму. Есть ли что-то, что я могу сделать по-другому? –

+0

Я тестировал оба ваших файла (как строки, а не как фактические файлы), загрузку, демпинг (с вашими «json.dump' args) и повторную загрузку, а затем сравнение объектов« до »и« после ». В обоих случаях загруженные объекты сравниваются равными. Все, что я могу предложить, - попытаться найти раздел в файле плохих данных, вызывающий эту ошибку; возможно, вы можете вырезать материал из JSON (но я думаю, у вас нет большой широты там, не делая данные недействительными). –

ответ

0

Вы выполняете эту команду:

phantomjs highcharts-convert.js -infile data.json -outfile chart.png

Согласно docs (поиск "унаследованного решения", параметр -infile должен быть:

файл для преобразования, сценарий нужно найти, если это файл javascript с объектом опций или файлом svg. Он проверяет входной файл для начала с «< svg», «<? Xml "или" <! Doctype ". Затем это файл svg , в противном случае он считается файлом параметров.

но вы передаете его JSON, который он не может разобрать.

Попробуйте пропусканием файла JavaScript, как это:

var options = { // your JSON here, as a js object }; 

 Смежные вопросы

  • Нет связанных вопросов^_^