23 #include "json_parser.hh"
24 #include "json_scanner.h"
26 #include <QtCore/QBuffer>
27 #include <QtCore/QStringList>
28 #include <QtCore/QTextStream>
29 #include <QtCore/QDebug>
31 using namespace QJson;
33 ParserPrivate::ParserPrivate() :
38 , m_specialNumbersAllowed(false)
42 ParserPrivate::~ParserPrivate()
47 void ParserPrivate::setError(QString errorMsg,
int errorLine) {
49 m_errorMsg = errorMsg;
50 m_errorLine = errorLine;
63 QVariant Parser::parse (QIODevice* io,
bool* ok)
65 d->m_errorMsg.clear();
70 if (!io->open(QIODevice::ReadOnly)) {
73 qCritical (
"Error opening device");
78 if (!io->isReadable()) {
81 qCritical (
"Device is not readable");
86 d->m_scanner =
new JSonScanner (io);
87 d->m_scanner->allowSpecialNumbers(d->m_specialNumbersAllowed);
101 QVariant Parser::parse(
const QByteArray& jsonString,
bool* ok) {
103 buffer.open(QBuffer::ReadWrite);
104 buffer.write(jsonString);
106 return parse (&buffer, ok);
109 QString Parser::errorString()
const
111 return d->m_errorMsg;
114 int Parser::errorLine()
const
116 return d->m_errorLine;
120 d->m_specialNumbersAllowed = allowSpecialNumbers;
123 bool Parser::specialNumbersAllowed()
const {
124 return d->m_specialNumbersAllowed;