JSON Machine v1.0.0 Release Notes

Release Date: 2022-02-04 // about 2 years ago
  • ✂ Removed

    • ✂ Removed deprecated functions objects() and httpClientChunks().
    • ✂ Removed deprecated JsonMachine entrypoint class. Use Items instead.
    • ✂ Removed deprecated Decoder interface. Use ItemDecoder instead.
    • ✂ Removed Parser::getJsonPointer(). Use Parser::getJsonPointers()/Items::getJsonPointers() instead.
    • ✂ Removed Parser::getJsonPointerPath(). No replacement. Was not useful for anything other than testing and exposed internal implementation.

    🔄 Changed

    🛠 Simplified and fixed decoding

    • JSON Pointer parts between slashes (a.k.a reference tokens) must be valid encoded JSON strings to be JSON Pointer RFC 6901 compliant. It means that no internal key decoding is performed anymore. You will have to change your JSON Pointers if you match against keys with escape sequences. diff Items::fromString( '{"quotes\"": [1, 2, 3]}', - ['pointer' => '/quotes"'] + ['pointer' => '/quotes\"'] );
    • Method ItemDecoder::decodeInternalKey() was deleted as well as related ValidStringResult. They are not used anymore as described in previous point.
    • PassThruDecoder does not decode keys anymore. Both the key and the value yielded are raw JSON now.

    Other

    • 0️⃣ Default decoding structure of Parser is object. (You won't notice that unless you use Parser class directly)
    • SyntaxError renamed to SyntaxErrorException
    • Items::__construct accepts the options array instead of separate arguments. (You won't notice that unless you instantiate Items class directly)
    • Lexer renamed to Tokens
    • DebugLexer renamed to TokensWithDebugging

    ➕ Added

    • 👀 Multiple JSON Pointers can be specified as an array in pointer option. See README. Thanks @fwolfsjaeger.
    • 🆕 New methods available during iteration: Items::getCurrentJsonPointer() and Items::getMatchedJsonPointer() 👀 to track where you are. See README. Thanks @fwolfsjaeger.

    🛠 Fixed

    • Incorrect position information of TokensWithDebugging::getPosition(). Was constantly off by 1-2 bytes.