25 #include "json_scanner.h" 27 #include <QtCore/QBuffer> 28 #include <QtCore/QStringList> 29 #include <QtCore/QTextStream> 30 #include <QtCore/QDebug> 32 using namespace QJson;
34 ParserPrivate::ParserPrivate() :
36 m_specialNumbersAllowed(false)
41 ParserPrivate::~ParserPrivate()
47 void ParserPrivate::setError(
const QString &errorMsg,
int errorLine) {
49 m_errorMsg = errorMsg;
50 m_errorLine = errorLine;
53 void ParserPrivate::reset()
74 QVariant Parser::parse (QIODevice* io,
bool* ok)
79 if (!io->open(QIODevice::ReadOnly)) {
82 qCritical (
"Error opening device");
87 if (!io->isReadable()) {
90 qCritical (
"Device is not readable");
98 d->setError(QLatin1String(
"No data"), 0);
103 d->m_scanner =
new JSonScanner (io);
104 d->m_scanner->allowSpecialNumbers(d->m_specialNumbersAllowed);
118 QVariant Parser::parse(
const QByteArray& jsonString,
bool* ok) {
120 buffer.open(QBuffer::ReadWrite | QBuffer::Text);
121 buffer.write(jsonString);
123 return parse (&buffer, ok);
126 QString Parser::errorString()
const 128 return d->m_errorMsg;
131 int Parser::errorLine()
const 133 return d->m_errorLine;
137 d->m_specialNumbersAllowed = allowSpecialNumbers;
140 bool Parser::specialNumbersAllowed()
const {
141 return d->m_specialNumbersAllowed;
void allowSpecialNumbers(bool allowSpecialNumbers)