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() :
36 m_specialNumbersAllowed =
false;
40 ParserPrivate::~ParserPrivate()
46 void ParserPrivate::setError(QString errorMsg,
int errorLine) {
48 m_errorMsg = errorMsg;
49 m_errorLine = errorLine;
52 void ParserPrivate::reset()
73 QVariant Parser::parse (QIODevice* io,
bool* ok)
78 if (!io->open(QIODevice::ReadOnly)) {
81 qCritical (
"Error opening device");
86 if (!io->isReadable()) {
89 qCritical (
"Device is not readable");
97 d->setError(QLatin1String(
"No data"), 0);
102 d->m_scanner =
new JSonScanner (io);
103 d->m_scanner->allowSpecialNumbers(d->m_specialNumbersAllowed);
117 QVariant Parser::parse(
const QByteArray& jsonString,
bool* ok) {
119 buffer.open(QBuffer::ReadWrite | QBuffer::Text);
120 buffer.write(jsonString);
122 return parse (&buffer, ok);
125 QString Parser::errorString()
const 127 return d->m_errorMsg;
130 int Parser::errorLine()
const 132 return d->m_errorLine;
136 d->m_specialNumbersAllowed = allowSpecialNumbers;
139 bool Parser::specialNumbersAllowed()
const {
140 return d->m_specialNumbersAllowed;
void allowSpecialNumbers(bool allowSpecialNumbers)