akheron edited this page Sep 19, 2011 · 22 revisions
Clone this wiki locally

Note: This is out of date. The GitHub repository’s issue tracker is used for roadmap.

See Versioning Policy on how additions and changes to API can be targeted to versions.

Version 2.0 (not maintained)

Git branch: 1.3

  • Unify the usage of unsigned int/unsigned long/whatever in API
    (done in commit 68f2861e92e08eb5e2af51c026981bc1e990e1eb)
  • Change the underlying type of JSON_INTEGER to long long or long, based on what is available (discussed here and here)
    (done in commits 014c49c28570eddeb482f8580a88d48b491d15b0, ffbab6fedd86ee1a0c7884d62fa7233ce9d745d2 and b76c69de1b26b589551879d80ae582a5a3506cc0)
  • Refactor and simplify the UTF-8 input layer, keep track the line where an UTF-8 decoding error occurs
    (done in commit 5df7b7939794abc9e8a826919d84d27385a6679d)
  • All things that are required to stabilize the API so that it can remain backwards compatible for the distant future

Version 1.3 (not maintained)

Git branch: 1.3

Overstriked bullets were originally planned but not implemented

  • Merge janssonxx, the C++ wrapper
    (merged in 3dd29366b8f4c6809c7e654bfc9aa0bd0070febf, removed in 1347686dbf7c06e03d6a3d5c8999315cc7158af3)
  • Add API required by janssonxx:
    • json_object_iter_at(object, key): return an iterator pointing to a specific key in an object
    • json_object_iter_set(iter, value): replace the value that an iterator points to
    • Custom load/dump that take callbacks to read/write data
  • Add a function to encode any JSON value (not just array or object) (decode too?)
  • Preserve addition order of object keys when dumping (e.g. JSON_PRESERVER_ORDER encoding flag). Discussed here.
    (done in commit f18ef5144a77ebdbe7285711884b217b86e2c3b6)

Version 1.2 (not maintained)

Git branch: 1.2

For 1.2.1:

  • Approximate real number undeflow with zero in decoder
    (done in commit bb89a5d4d377f7b6b8c0c9ce3a2698b112447d08)
  • Document limitations and RFC conformance (as discussed here)
    (done in commit c7c2edae8a6a2ba25c31d50c9f44bbbf080889da)
  • Allow inline with compilers that don’t support it
    (done in commit 29ee3832cf1cee4cfebad8e440b58877437c4615)
  • Fix reference counting on true, false and null
    (done in commit f284e3c069abcdfc1145e939b0c284910c274d17)
  • Make int32_t available on all systems
    (done in commit 286823227c8c06e729dd939ec53b124c5c9afbc4, fixed a bit in commit a2a9107600da8ed0302e414fef8b9e70233e71ca, autoconf 2.60 version dependency added in commit 024106bbfbd7376656876aa8bd00a333d5ada10c)

For 1.2:

  • Revise whitespace usage in encoder, implement compact output (JSON_COMPACT encoding flag)
    (done in commit f236c14dc5457a41119492ebce41b8920fd31f65)
  • JSON_ENSURE_ASCII encoding flag to escape all Unicode characters in encoder output
    (done in commit 50031440a3b7ab2623e9468bd20e837250250cd9)
  • JSON_SORT_KEYS encoding flag to sort objects by key when encoding
    (done in commit 19a606d7361e73ff2f5e0b240c2adb07b35e4273)
  • Add functions that assume valid UTF-8 when inserting strings into Jansson data structures
    (done in commit dd2fe1ebe80fa9a95265fbcd20b6ffdfdc30d469)
  • Add functions for testing the equality of two JSON values
    (done in commit 95a468cebb450ed779db90ca8c5805ffa2c93370)
  • Add functions for copying JSON values, as discussed in two last messages of this mailing list thread
    (done in commit 9db34dc31a69312ec1f486e6273d1bf5c80f978d)
  • Documentation: Add chapter “What’s New” that documents changes between versions (the information is already in the CHANGES file)
    (done in commit b76ee75aad975849ce8a55d10c55e5090dd33d8f, tweaked in commit 78594e9bd33372673969c96e08e6fe92d53bc368)

Untargeted features

These might be implemented at some point. See also the issue tracker.

  • configure flag --without-unicode that builds the library in an ASCII-only mode, i.e. everything in the API that now accepts/requires/outputs UTF-8 would accept/require/output ASCII. This could make the library smaller and probably faster for those users who do not require Unicode support.
  • Incremental parser that doesn’t require all the input available when the parsing begins, i.e. the user could feed the parser with input data as soon as it is available. This would require a major refactorization of the parser and the lexer, and is probably not worth it.
  • Enhance checks for validity of double values (e.g. the argument for json_real() with isnormal()). This requires support from the stdlib or C99.
  • Support for encoding and decoding JSON texts in UTF-16 and UTF-32
  • Documentation: Add section “Unicode” or similar to API reference that documents the proper usage of Unicode (e.g. normalization)
  • Make it possible to stop parsing as soon as a valid JSON text is parsed. Do not eat whitespace at the end or bail out if there’s garbage after the JSON text. Good for parsing streams of multiple JSON texts.
  • Detect BOMs, or at least ignore them


These should probably be implemented as separate libraries to keep the Jansson core smaller.