class Parser

Library: JSON
Package: JSON
Header: Poco/JSON/Parser.h


A parser for reading RFC 4627 compliant JSON from strings or streams.

Simple usage example:

std::string json = "{ \"name\" : \"Franky\", \"children\" : [ \"Jonas\", \"Ellen\" ] }";
Parser parser;
Var result = parser.parse(json);
// ... use result (see next example)
std::ostringstream ostr;
PrintHandler::Ptr pHandler = new PrintHandler(ostr);
parser.parse(json); // ostr.str() == json

The result of parsing a valid JSON document will be either an Object or an Array. Therefore the result of parse() is a Poco::Dynamic::Var containing a Poco::SharedPtr to an Object or Array instance.


std::string json = "{ \"name\" : \"Franky\", \"children\" : [ \"Jonas\", \"Ellen\" ] }";
Parser parser;
Var result = parser.parse(json);
Object::Ptr object = result.extract<Object::Ptr>();
std::string name = object.getValue<std::string>("name");
Array::Ptr children = object.getArray("children");


Direct Base Classes: ParserImpl

All Base Classes: ParserImpl

Member Summary

Member Functions: asVar, getAllowComments, getAllowNullByte, getDepth, getHandler, parse, reset, result, setAllowComments, setAllowNullByte, setDepth, setHandler

Inherited Functions: asVarImpl, getAllowCommentsImpl, getAllowNullByteImpl, getDepthImpl, getHandlerImpl, parseImpl, resetImpl, resultImpl, setAllowCommentsImpl, setAllowNullByteImpl, setDepthImpl, setHandlerImpl



    const Handler::Ptr & pHandler = new ParseHandler,
    std::size_t bufSize = JSON_PARSE_BUFFER_SIZE

Creates JSON Parser, using the given Handler and buffer size.


~Parser virtual

virtual ~Parser();

Destroys JSON Parser.

Member Functions

asVar inline

Dynamic::Var asVar() const;

Returns the result of parsing;

getAllowComments inline

bool getAllowComments() const;

Returns true if comments are allowed, false otherwise.

By default, comments are not allowed.

getAllowNullByte inline

bool getAllowNullByte() const;

Returns true if null byte is allowed, false otherwise.

By default, null bytes are allowed.

getDepth inline

std::size_t getDepth() const;

Returns the allowed JSON depth.

getHandler inline

const Handler::Ptr & getHandler();

Returns the Handler.

parse inline

Dynamic::Var parse(
    const std::string & json

Parses JSON from a string.


Dynamic::Var parse(
    std::istream & in

Parses JSON from an input stream.

reset inline

void reset();

Resets the parser.

result inline

Dynamic::Var result() const;

Returns the result of parsing as Dynamic::Var;

setAllowComments inline

void setAllowComments(
    bool comments

Allow or disallow comments. By default, comments are not allowed.

setAllowNullByte inline

void setAllowNullByte(
    bool nullByte

Allow or disallow null byte in strings.

By default, null byte is allowed.

setDepth inline

void setDepth(
    std::size_t depth

Sets the allowed JSON depth.


void setHandler(
    const Handler::Ptr & pHandler

Set the Handler.

Securely control IoT edge devices from anywhere   Connect a Device