diff --git a/.github/workflows/doc-build.yml b/.github/workflows/doc-build.yml deleted file mode 100644 index 07265e0..0000000 --- a/.github/workflows/doc-build.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Build API Docs - -permissions: - contents: write - -on: - workflow_dispatch: - -jobs: - call-doc-build-workflow: - uses: clojure/build.ci/.github/workflows/doc-build.yml@master - with: - project: clojure/data.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 286cf95..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Release on demand - -permissions: - contents: write - -on: - workflow_dispatch: - inputs: - releaseVersion: - description: "Version to release" - required: true - snapshotVersion: - description: "Snapshot version after release" - required: true - -jobs: - call-release: - uses: clojure/build.ci/.github/workflows/release.yml@master - with: - releaseVersion: ${{ github.event.inputs.releaseVersion }} - snapshotVersion: ${{ github.event.inputs.snapshotVersion }} - secrets: inherit \ No newline at end of file diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml deleted file mode 100644 index 9fdad8c..0000000 --- a/.github/workflows/snapshot.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: Snapshot on demand - -permissions: - contents: read - -on: [workflow_dispatch] - -jobs: - call-snapshot: - uses: clojure/build.ci/.github/workflows/snapshot.yml@master - secrets: inherit diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 2cc441a..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: Test - -permissions: - contents: read - -on: [push] - -jobs: - call-test: - uses: clojure/build.ci/.github/workflows/test.yml@master diff --git a/.gitignore b/.gitignore deleted file mode 100644 index d6672d7..0000000 --- a/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -target -.cpcache/ -.idea/ -*.iml -.lein* -.nrepl* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 5ea8fc7..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,12 +0,0 @@ -This is a [Clojure contrib] project. - -Under the Clojure contrib [guidelines], this project cannot accept -pull requests. All patches must be submitted via [JIRA]. - -See [Contributing] on the Clojure website for -more information on how to contribute. - -[Clojure contrib]: https://clojure.org/community/contrib_libs -[Contributing]: https://clojure.org/community/contributing -[JIRA]: https://clojure.atlassian.net/browse/DJSON -[guidelines]: https://clojure.org/community/contrib_howto diff --git a/LICENSE b/LICENSE deleted file mode 100644 index e246f6a..0000000 --- a/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation - distributed under this Agreement, and -b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - - where such changes and/or additions to the Program originate from and are - distributed by that particular Contributor. A Contribution 'originates' - from a Contributor if it was added to the Program by such Contributor - itself or anyone acting on such Contributor's behalf. Contributions do not - include additions to the Program which: (i) are separate modules of - software distributed in conjunction with the Program under their own - license agreement, and (ii) are not derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. - -2. GRANT OF RIGHTS - a) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free copyright license to - reproduce, prepare derivative works of, publicly display, publicly - perform, distribute and sublicense the Contribution of such Contributor, - if any, and such derivative works, in source code and object code form. - b) Subject to the terms of this Agreement, each Contributor hereby grants - Recipient a non-exclusive, worldwide, royalty-free patent license under - Licensed Patents to make, use, sell, offer to sell, import and otherwise - transfer the Contribution of such Contributor, if any, in source code and - object code form. This patent license shall apply to the combination of - the Contribution and the Program if, at the time the Contribution is - added by the Contributor, such addition of the Contribution causes such - combination to be covered by the Licensed Patents. The patent license - shall not apply to any other combinations which include the Contribution. - No hardware per se is licensed hereunder. - c) Recipient understands that although each Contributor grants the licenses - to its Contributions set forth herein, no assurances are provided by any - Contributor that the Program does not infringe the patent or other - intellectual property rights of any other entity. Each Contributor - disclaims any liability to Recipient for claims brought by any other - entity based on infringement of intellectual property rights or - otherwise. As a condition to exercising the rights and licenses granted - hereunder, each Recipient hereby assumes sole responsibility to secure - any other intellectual property rights needed, if any. For example, if a - third party patent license is required to allow Recipient to distribute - the Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - d) Each Contributor represents that to its knowledge it has sufficient - copyright rights in its Contribution, if any, to grant the copyright - license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - - a) it complies with the terms and conditions of this Agreement; and - b) its license agreement: - i) effectively disclaims on behalf of all Contributors all warranties - and conditions, express and implied, including warranties or - conditions of title and non-infringement, and implied warranties or - conditions of merchantability and fitness for a particular purpose; - ii) effectively excludes on behalf of all Contributors all liability for - damages, including direct, indirect, special, incidental and - consequential damages, such as lost profits; - iii) states that any provisions which differ from this Agreement are - offered by that Contributor alone and not by any other party; and - iv) states that source code for the Program is available from such - Contributor, and informs licensees how to obtain it in a reasonable - manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - - a) it must be made available under this Agreement; and - b) a copy of this Agreement must be included with each copy of the Program. - Contributors may not remove or alter any copyright notices contained - within the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if -any, in a manner that reasonably allows subsequent Recipients to identify the -originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner -which does not create potential liability for other Contributors. Therefore, -if a Contributor includes the Program in a commercial product offering, such -Contributor ("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits and -other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such Commercial -Contributor in connection with its distribution of the Program in a commercial -product offering. The obligations in this section do not apply to any claims -or Losses relating to any actual or alleged intellectual property -infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim at -its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each -Recipient is solely responsible for determining the appropriateness of using -and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the -risks and costs of program errors, compliance with applicable laws, damage to -or loss of data, programs or equipment, and unavailability or interruption of -operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and does -not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, -Recipient agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue -and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of the -Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, -whether expressly, by implication, estoppel or otherwise. All rights in the -Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial in -any resulting litigation. - - diff --git a/README.md b/README.md deleted file mode 100644 index 653f3e2..0000000 --- a/README.md +++ /dev/null @@ -1,335 +0,0 @@ -data.json -======================================== - -JSON parser/generator to/from Clojure data structures. - -Key goals: -* Compliant with JSON spec per https://json.org/ -* No external dependencies - - -Releases and Dependency Information ----------------------------------------- - -This project follows the version scheme MAJOR.MINOR.PATCH where each component provides some relative indication of the size of the change, but does not follow semantic versioning. In general, all changes endeavor to be non-breaking (by moving to new names rather than by breaking existing names). - -Latest stable release is [2.5.2] - -[CLI/`deps.edn`](https://clojure.org/reference/deps_and_cli) dependency information: -```clojure -org.clojure/data.json {:mvn/version "2.5.2"} -``` - -[Leiningen] dependency information: - - [org.clojure/data.json "2.5.2"] - -[Maven] dependency information: - - - org.clojure - data.json - 2.5.2 - - -[Leiningen]: https://leiningen.org/ -[Maven]: https://maven.apache.org/ - - -Other versions: - -* [All Released Versions](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.clojure%22%20AND%20a%3A%22data.json%22) -* [Development Snapshots](https://oss.sonatype.org/index.html#nexus-search;gav~org.clojure~data.json~~~) -* [Development Snapshot Repositories](https://clojure.org/releases/downloads#_using_clojure_snapshot_releases) - - - -Usage ----------------------------------------- - -[API Documentation](https://clojure.github.io/data.json/) - -Example usage: - - (ns example - (:require [clojure.data.json :as json])) - -To convert to/from JSON strings, use `json/write-str` and `json/read-str`: - - (json/write-str {:a 1 :b 2}) - ;;=> "{\"a\":1,\"b\":2}" - - (json/read-str "{\"a\":1,\"b\":2}") - ;;=> {"a" 1, "b" 2} - -Note that these operations are not symmetric: converting Clojure data -into JSON is lossy. - - -### Converting Key/Value Types - -You can specify a `:key-fn` to convert map keys on the way in or out: - - (json/read-str "{\"a\":1,\"b\":2}" - :key-fn keyword) - ;;=> {:a 1, :b 2} - - (json/write-str {:a 1 :b 2} - :key-fn #(.toUpperCase %)) - ;;=> "{\"A\":1,\"B\":2}" - - (json/read-str "{\"a\":1,\"b\":2}" - :key-fn #(keyword "com.example" %)) - ;;=> {:com.example/a 1, :com.example/b 2} - -You can specify a `:value-fn` to convert map values on the way in or -out. The value-fn will be called with two arguments, the key and the -value, and it returns the updated value. - - (defn my-value-reader [key value] - (if (= key :date) - (java.sql.Date/valueOf value) - value)) - - (json/read-str "{\"number\":42,\"date\":\"2012-06-02\"}" - :value-fn my-value-reader - :key-fn keyword) - ;;=> {:number 42, :date #inst "2012-06-02T04:00:00.000-00:00"} - -Be aware that `:value-fn` only works on maps (JSON objects). If your -root data structure is, for example, a vector of dates, you will need -to pre- or post-process it outside of data.json. [clojure.walk] may be -useful for this. - -[clojure.walk]: https://clojure.github.io/clojure/clojure.walk-api.html - - -### Order of key-fn / value-fn - -If you specify both a `:key-fn` and a `:value-fn` when **reading**, -the value-fn is called **after** the key has been processed by the -key-fn. - -The **reverse** is true when **writing**: - - (defn my-value-writer [key value] - (if (= key :date) - (str (java.sql.Date. (.getTime value))) - value)) - - (json/write-str {:number 42, :date (java.util.Date. 112 5 2)} - :value-fn my-value-writer - :key-fn name) - ;;=> "{\"number\":42,\"date\":\"2012-06-02\"}" - - -### Reading/Writing a Stream - -You can also read JSON directly from a java.io.Reader with `json/read` -and write JSON directly to a java.io.Writer with `json/write`. - - -### More - -Other options are available. Refer to the [API Documentation] for details. - -[API Documentation]: https://clojure.github.io/data.json/ - - - -Developer Information ----------------------------------------- - -* [GitHub project](https://github.com/clojure/data.json) -* [How to contribute](https://clojure.org/community/contributing) -* [Bug Tracker](https://clojure.atlassian.net/browse/DJSON) -* [Continuous Integration](https://github.com/clojure/data.json/actions/workflows/test.yml) - - - -Change Log ----------------------------------------- - -* Release [2.5.2] on 2026-Jan-02 - * Update to latest parent pom and Clojure 1.11.4 - * Fix: [DJSON-56] During `read`, better error messages for chars < 32 -* Release [2.5.1] on 2024-Nov-26 - * Fix: `read` of JSON number followed by EOF can break subsequent read on supplier PBR from seeing EOF - * Fix: `read` docstring updated to specify minimum buffer size when PushbackReader supplied (64) -* Release [2.5.0] on 2023-Dec-21 - * Fix [DJSON-50]: `read` can take a PushbackReader for repeated read use case - * Fix `write` docstring to add `:indent` option added in [DJSON-18] - * Fix [DJSON-57]: Throw better exception when EOF encountered while reading array or object - * Add [DJSON-46]: In `read`, add `:extra-data-fn` that can be provided to cause an eof check after value is read - * Add [DJSON-54]: In `write`, add custom fallback fn for writing unknown types - * Perf [DJSON-61]: Faster string writing when string is "simple" - * Perf: Faster string writing when string is not simple - * Perf: Faster `read-str` -* Release [2.4.0] on 2021-Jul-12 - * Fix [DJSON-52]: Remove Classloader workaround to support Clojure 1.2.x and below - * Fix [DJSON-53]: Move deprecated API functions from compat ns into main ns -* Release [2.3.1] on 2021-May-19 - * Fix [DJSON-51]: Fix possible read of x00's in quoted strings on partial stream read -* Release [2.3.0] on 2021-May-14 - * Fix [DJSON-48]: Make array parsing match spec - * Fix [DJSON-18]: Make pprint-json much faster -* Release [2.2.3] on 2021-May-6 - * Fix [DJSON-47]: Make number parsing match spec (reject invalid numbers) -* Release [2.2.2] on 2021-Apr-26 - * Perf [DJSON-36]: Reapplied updated refactored code in read-array and read-object - * Add [DJSON-45]: Generative tests for read/write roundtrip -* Release [2.2.1] on 2021-Apr-19 - * Revert [DJSON-36]: Problem with transient batching in that change -* Release [2.2.0] on 2021-Apr-16 - * Add [DJSON-41]: New support for writing java.time.Instant and java.util.Date (+ subclasses) - * New options to `write` functions: - * `:date-formatter` - `java.time.DateTimeFormatter` to use (default `DateTimeFormatter/ISO_INSTANT`) - * `:sql-date-converter` - fn to convert `java.sql.Date` to `java.time.Instant` (default provided) - * Perf [DJSON-36]: Refactor code in read-array and read-object -* Release [2.1.1] on 2021-Apr-15 - * Fix [DJSON-43]: Fix buffer overflow in pushbackreader - * Update parent pom to latest (1.1.0) -* Release [2.1.0] on 2021-Apr-6 - * Fix [DJSON-39]: Support writing UUIDs (as strings) -* Release [2.0.2] on 2021-Mar-27 - * Fix [DJSON-38]: Type-hint return type of write-str - * Fix [DJSON-40]: Make named argument passing compatible with new -* Release [2.0.1] on 2021-Mar-19 - * Fix [DJSON-37]: Fix off-by-one error reading long strings, regression in 2.0.0 -* Release [2.0.0] on 2021-Mar-19 - * Perf [DJSON-35]: Replace PrintWriter with more generic Appendable, reduce wrapping - * Perf [DJSON-34]: More efficient writing for common path - * Perf [DJSON-32]: Use option map instead of dynamic variables (affects read+write) - * NOTE: Includes a breaking change in the internal JSONWriter protocol method signature - * Perf [DJSON-33]: Improve speed of reading JSON strings - * Fix [DJSON-30]: Fix bad test -* Release [1.1.0] on 2021-Mar-5 - * Fix [DJSON-26]: write-object should check seq on loop var, not param - * Use latest parent pom (will bump default clojure dep to 1.8.0) - * Use direct linking on "aot" classifier lib -* Release [1.0.0] on 2020-Feb-18 -* Release [0.2.7] on 2019-Nov-18 - * Fix [DJSON-29]: throw exception on missing object entries (extra commas) -* Release [0.2.6] on 2015-Mar-6 - * Modify build to produce an AOT package with classifier "aot" -* Release [0.2.5] on 2014-Jun-13 - * Fix [DJSON-17]: throw exception on Infinite or NaN floating-point - values. Old behavior could produce invalid JSON. -* Release [0.2.4] on 2014-Jan-10 - * Small change in behavior: `clojure.data.json/pprint` now adds a - newline after its output just like `clojure.core/pprint` - * Fix [DJSON-13]: flush output after pprint - * Fix [DJSON-14]: handle EOF inside character escape - * Fix [DJSON-15]: bad syntax in test -* Release [0.2.3] on 2013-Aug-30 - * Enhancement [DJSON-9]: option to escape U+2028 and U+2029 - * Fix [DJSON-11]: printing unnecessary commas with value-fn -* Release [0.2.2] on 2013-Apr-07 - * Fix [DJSON-7]: extra commas when removing key/value pairs) - * Fix [DJSON-8]: wrong output stream in `write-json` -* Release [0.2.1] on 2012-Oct-26 - * Restores backwards-compatibility with 0.1.x releases. The older - 0.1.x APIs are marked as deprecated in their documentation. They - will be removed in a future release. -* Release [0.2.0] on 2012-Oct-12 - * **Not recommended for use**: this release introduced breaking API - changes (renaming core functions) without any path for - backwards-compatibility. Applications with transitive dependencies - on both the 0.2.x and 0.1.x APIs cannot use this version. - * New :key-fn and :value-fn permit flexible transformation - of values when reading & writing JSON - * Support for reading large integers as BigInt - * Optional support for reading decimals as BigDecimal - * Performance improvements -* Release [0.1.3] on 2012-Mar-09 - * Fix writing strings containing characters outside the BMP -* Release [0.1.2] on 2011-Oct-14 - * Better parsing of hexadecimal character escapes - * Fix EOF-handling bug - * Fix [DJSON-1]: reflection warnings -* Release [0.1.1] on 2011-Jul-01 - * Ensure that printing to `*out*` always uses a PrintWriter. -* Release [0.1.0] on 2011-Mar-18 - * Initial release. - * Source-compatible with clojure.contrib.json, except for the name change. - -[DJSON-61]: https://clojure.atlassian.net/browse/DJSON-61 -[DJSON-57]: https://clojure.atlassian.net/browse/DJSON-57 -[DJSON-56]: https://clojure.atlassian.net/browse/DJSON-56 -[DJSON-54]: https://clojure.atlassian.net/browse/DJSON-54 -[DJSON-53]: https://clojure.atlassian.net/browse/DJSON-53 -[DJSON-52]: https://clojure.atlassian.net/browse/DJSON-52 -[DJSON-51]: https://clojure.atlassian.net/browse/DJSON-51 -[DJSON-50]: https://clojure.atlassian.net/browse/DJSON-50 -[DJSON-48]: https://clojure.atlassian.net/browse/DJSON-48 -[DJSON-47]: https://clojure.atlassian.net/browse/DJSON-47 -[DJSON-46]: https://clojure.atlassian.net/browse/DJSON-46 -[DJSON-45]: https://clojure.atlassian.net/browse/DJSON-45 -[DJSON-43]: https://clojure.atlassian.net/browse/DJSON-43 -[DJSON-41]: https://clojure.atlassian.net/browse/DJSON-41 -[DJSON-40]: https://clojure.atlassian.net/browse/DJSON-40 -[DJSON-39]: https://clojure.atlassian.net/browse/DJSON-39 -[DJSON-38]: https://clojure.atlassian.net/browse/DJSON-38 -[DJSON-37]: https://clojure.atlassian.net/browse/DJSON-37 -[DJSON-36]: https://clojure.atlassian.net/browse/DJSON-36 -[DJSON-35]: https://clojure.atlassian.net/browse/DJSON-35 -[DJSON-34]: https://clojure.atlassian.net/browse/DJSON-34 -[DJSON-33]: https://clojure.atlassian.net/browse/DJSON-33 -[DJSON-32]: https://clojure.atlassian.net/browse/DJSON-32 -[DJSON-30]: https://clojure.atlassian.net/browse/DJSON-30 -[DJSON-29]: https://clojure.atlassian.net/browse/DJSON-29 -[DJSON-26]: https://clojure.atlassian.net/browse/DJSON-26 -[DJSON-18]: https://clojure.atlassian.net/browse/DJSON-18 -[DJSON-17]: https://clojure.atlassian.net/browse/DJSON-17 -[DJSON-15]: https://clojure.atlassian.net/browse/DJSON-15 -[DJSON-14]: https://clojure.atlassian.net/browse/DJSON-14 -[DJSON-13]: https://clojure.atlassian.net/browse/DJSON-13 -[DJSON-11]: https://clojure.atlassian.net/browse/DJSON-11 -[DJSON-9]: https://clojure.atlassian.net/browse/DJSON-9 -[DJSON-8]: https://clojure.atlassian.net/browse/DJSON-8 -[DJSON-7]: https://clojure.atlassian.net/browse/DJSON-7 -[DJSON-1]: https://clojure.atlassian.net/browse/DJSON-1 - -[2.5.2]: https://github.com/clojure/data.json/tree/v2.5.2 -[2.5.1]: https://github.com/clojure/data.json/tree/v2.5.1 -[2.5.0]: https://github.com/clojure/data.json/tree/v2.5.0 -[2.4.0]: https://github.com/clojure/data.json/tree/v2.4.0 -[2.3.1]: https://github.com/clojure/data.json/tree/v2.3.1 -[2.3.0]: https://github.com/clojure/data.json/tree/v2.3.0 -[2.2.3]: https://github.com/clojure/data.json/tree/v2.2.3 -[2.2.2]: https://github.com/clojure/data.json/tree/v2.2.2 -[2.2.1]: https://github.com/clojure/data.json/tree/v2.2.1 -[2.2.0]: https://github.com/clojure/data.json/tree/v2.2.0 -[2.1.1]: https://github.com/clojure/data.json/tree/v2.1.1 -[2.1.0]: https://github.com/clojure/data.json/tree/data.json-2.1.0 -[2.0.2]: https://github.com/clojure/data.json/tree/data.json-2.0.2 -[2.0.1]: https://github.com/clojure/data.json/tree/data.json-2.0.1 -[2.0.0]: https://github.com/clojure/data.json/tree/data.json-2.0.0 -[1.1.0]: https://github.com/clojure/data.json/tree/data.json-1.1.0 -[1.0.0]: https://github.com/clojure/data.json/tree/data.json-1.0.0 -[0.2.7]: https://github.com/clojure/data.json/tree/data.json-0.2.7 -[0.2.6]: https://github.com/clojure/data.json/tree/data.json-0.2.6 -[0.2.5]: https://github.com/clojure/data.json/tree/data.json-0.2.5 -[0.2.4]: https://github.com/clojure/data.json/tree/data.json-0.2.4 -[0.2.3]: https://github.com/clojure/data.json/tree/data.json-0.2.3 -[0.2.2]: https://github.com/clojure/data.json/tree/data.json-0.2.2 -[0.2.1]: https://github.com/clojure/data.json/tree/data.json-0.2.1 -[0.2.0]: https://github.com/clojure/data.json/tree/data.json-0.2.0 -[0.1.3]: https://github.com/clojure/data.json/tree/data.json-0.1.3 -[0.1.2]: https://github.com/clojure/data.json/tree/data.json-0.1.2 -[0.1.1]: https://github.com/clojure/data.json/tree/data.json-0.1.1 -[0.1.0]: https://github.com/clojure/data.json/tree/data.json-0.1.0 - - - -Copyright and License ----------------------------------------- - -Copyright (c) Stuart Sierra, Rich Hickey, and contributors. -All rights reserved. The use and -distribution terms for this software are covered by the Eclipse Public -License 1.0 (https://opensource.org/license/epl-1-0/) witch can -be found in the file epl-v10.html at the root of this distribution. -By using this software in any fashion, you are agreeing to be bound by -the terms of this license. You must not remove this notice, or any -other, from this software. diff --git a/api-index.html b/api-index.html new file mode 100644 index 0000000..c00bdf9 --- /dev/null +++ b/api-index.html @@ -0,0 +1,242 @@ + + + + Index - data.json 2.5.2-SNAPSHOT API documentation + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +

Index of Public Functions and Variables - data.json 2.5.2-SNAPSHOT (in development)

+This page has an alphabetical index of all the documented functions and variables +in data.json. + + +

+

+Shortcuts:
+A B C D + E F G H + I J K L + M +
+N O P Q + R S T U + V W X Y + Z +
+Other +
+
+ +
+

A

+
+
+  
+
+

B

+
+
+  
+
+

C

+
+
+  
+
+

D

+
+
+  
+
+

E

+
+
+  
+
+

F

+
+
+  
+
+

G

+
+
+  
+
+

H

+
+
+  
+
+

I

+
+
+  
+
+

J

+
+ json-str                     function      clojure.data.json  DEPRECATED; replaced by 'write-str'.  Converts x t...
+ JSONWriter                   protocol      clojure.data.json  
+
+  
+
+

K

+
+
+  
+
+

L

+
+
+  
+
+

M

+
+
+  
+
+

N

+
+
+  
+
+

O

+
+ on-extra-throw               function      clojure.data.json  Pass as :extra-data-fn to `read` or `read-str` to ...
+ on-extra-throw-remaining     function      clojure.data.json  Pass as :extra-data-fn to `read` or `read-str` to ...
+
+  
+
+

P

+
+ pprint                       function      clojure.data.json  Pretty-prints JSON representation of x to *out*. O...
+ pprint-json                  function      clojure.data.json  DEPRECATED; replaced by 'pprint'.  Pretty-prints J...
+ print-json                   function      clojure.data.json  DEPRECATED; replaced by 'write' to *out*.  Write J...
+
+  
+
+

Q

+
+
+  
+
+

R

+
+ ->ReaderPBR                  function      clojure.data.json  Positional factory function for class clojure.data...
+ read                         function      clojure.data.json  Reads a single item of JSON data from a java.io.Re...
+ read-json                    function      clojure.data.json  DEPRECATED; replaced by read-str.  Reads one JSON ...
+ read-str                     function      clojure.data.json  Reads one JSON value from input String. Options ar...
+ ReaderPBR                    type          clojure.data.json  
+
+  
+
+

S

+
+ ->StringPBR                  function      clojure.data.json  Positional factory function for class clojure.data...
+ StringPBR                    type          clojure.data.json  
+
+  
+
+

T

+
+
+  
+
+

U

+
+
+  
+
+

V

+
+
+  
+
+

W

+
+ -write                       function      clojure.data.json  Print object to Appendable out as JSON.
+ write                        function      clojure.data.json  Write JSON-formatted output to a java.io.Writer. O...
+ write-json                   function      clojure.data.json  DEPRECATED; replaced by 'write'.  Print object to ...
+ write-str                    function      clojure.data.json  Converts x to a JSON-formatted string. Options are...
+
+  
+
+

X

+
+
+  
+
+

Y

+
+
+  
+
+

Z

+
+
+  
+
+

Other

+
+
+  
+
+ +
+
+
+
+
+ +
+
Logo & site design by Tom Hickey.
+ Clojure auto-documentation system by Tom Faulhaber.
+
+ + + + \ No newline at end of file diff --git a/deps.edn b/deps.edn deleted file mode 100644 index 1fafc86..0000000 --- a/deps.edn +++ /dev/null @@ -1,2 +0,0 @@ -{:paths ["src/main/clojure"] - :deps {org.clojure/clojure {:mvn/version "1.11.4"}}} diff --git a/dev-resources/1000-null.json b/dev-resources/1000-null.json deleted file mode 100644 index 2973e01..0000000 --- a/dev-resources/1000-null.json +++ /dev/null @@ -1 +0,0 @@ -[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null] \ No newline at end of file diff --git a/dev-resources/1000-numbers.json b/dev-resources/1000-numbers.json deleted file mode 100644 index fc07797..0000000 --- a/dev-resources/1000-numbers.json +++ /dev/null @@ -1 +0,0 @@ -[-507.524, 635E-3, 365.845E4, -402, -917, 834.293E3, -366, 314, 273E3, -520, -222.183, -147.117E-3, -309.615E+2, -859, -200.726e+4, -176e0, 890.614, -417.612, -260.452, 794.869e1, -301.12, -379.661, 27e4, 21.417E+0, 342.909, -677.504, 713e+3, 782.7E+0, -336.432E1, 693.200, 882.348E1, 258.703, -120.915, -918e+0, -552e+1, -856.738E+0, 573e+1, 447, 647, -85.793, -408, 821.838, 173.751, -812.373, 434e+1, 326, -328.289E+0, -353, -118.704, -474.860E-2, 34, -112, -147, -242E-0, -212.606e+0, 761e4, -555e1, -112, -750.133, -258.306, 313.697e4, -442E2, 1.201, -396.665, -221.440, -434, 152E3, 212.994E+3, 684.200E3, -603.999, -219, -539.300, 636.941, -97.724e-4, -123, -930, 75, -583e+4, -449.950E-3, -238e+0, -829.367e-0, -640.416, -363, -953, -653E-4, 160.703E-2, 879.486, 328, -905.215, -73.202e+0, -666.957E+4, 581.548E+2, 44.750, 26, 210, -281.251e+1, 676, -64.992E+4, -645E+4, 359e-4, 58.155e-3, 579.357e-4, -924.213e+1, -283.552e+4, -923e1, -551.804, 925, -479, 565.79, -598, -817e2, 58.192, -564, 329.412, 67, 770, 728.596E3, -256, 22, -643, -865, -359, 537, 621, 935.562E-3, -259, 131.604e+1, -546.361e+4, 73.557e-4, 374.826, 687.414, -798, 479e4, 565E1, -754e-3, -339, -742.82, -56.11, 986.568, 226.572e2, -320.927E+3, 650.573, -812.344E0, 300.666E-0, -246.290, -418.558, -290E-4, 384e3, 427.638, -744.66, 46e0, 739.638e0, -380, -699, -270, 65.581, -752e0, -131, -669, -337E-1, -621.224e+0, -900.525E-0, 518.384, 712.396, 552.967, 82.293, -278, 925.703, -461e3, 994, -579, 5.424e-1, -501.261, -158.609e4, 780.248E+0, 809.405e2, 799.176, 940E+3, -539.365E+4, 88.185E-0, -970.107E+2, 612.331E+1, 869e2, -344, 223, 862, 593E4, 561, -78, 398, 4, 988.376, 411.175, 711.624, -709.929e+2, -159E2, -59e-4, 140.47, -758.513, 574.712, -656e+3, -326, 257.982, -386E+1, -40.776, -515.922E+1, -448.93, -238.954E+1, 776, 382.210E+3, -261.196E+3, -441.49, -429E4, 440, -907e+3, 84e+2, -292.903, 462.520E-0, -400, -155, 33.0E2, -258, -772E-2, -500, 858, 184.163E0, 455, -504.202, -660e-1, -357.380, -332.409e3, 75.653, -462e-4, 272.223, 560E-2, 983.905, 660e-3, 165, -131.808E-3, 522.134E1, -165.226E-0, 33.13, 636E-4, -85E1, 330, -422E+0, 920, -904.597E3, -84.14, 870, -764e4, 48e-3, -320.591e-1, -7E1, -963.370E-2, 924.395e+4, 863.633e0, -345e-0, 817.820e+2, -169.606, 368e3, 705E-0, 812e-1, 184, -171.392, 159.149, -131.211e1, -916, 285.143E-1, -528.570e-3, -618, -239.78, -263, 366E-4, 409, -974, -489.250, 536.300E0, -18, -134.174, 229, 468, -535e-0, -662.495e+4, -445.780e+0, -710.955e-2, -112.149E-0, -479, 926e+2, 19.275e4, -80.884E4, 610, 957e-4, -194, 553e3, 961.501, -605, -595.833E0, -403.225e-3, -443E+0, 28e4, -466.556e+4, -3, 626E+4, 833.973E+3, 392, 628e3, 721.381e-1, 612E0, 350e1, 231, 154, 94e-2, -337, -353E+3, 260.543E-2, 307, -999E+2, 197, 666.458, -961.817, 852e+0, -885, 21.604E0, 43e-1, 859.883e-3, 903.526E+2, 899e1, -208.971e1, -179.681, -923.303e+0, -299, 614e-4, 329.513, 859.653E-3, -275e-1, -339.491e-4, 240.447, 879.34, -563, -204.587, -83.319, 897, -87.390, -533e-1, -395.394E-2, -578, -210, 465, -530.572, 619, -931.380, 361.470, 743, 799.303, 775, -982e-2, -551, -121, 250e-1, 567E-3, 889.252, 273.440e4, 110, 534, 367, 783.630, -840e-0, -655, 239.406E1, -79.420e-3, 331.243, 133.737E-2, 585.572, 176, -857.566, -740e-4, 394.456e+1, 13.6e-0, 360.806, 26.606, 587.869, -128, -285.208e+1, -215, 43.728e-0, -761.149, -511.972e-3, 568.666, -131E+2, -847, 714.859, 360.905, 118, -38, -518, -891.729E2, 553, 465e-2, 713, 710E-4, 576.986, -987e0, 51.896, -637e-1, -722.850, 817.26e+3, -565, -253, 388.784e-4, 304, 874.607, 171.804e+4, 305, 497, 55.430E+2, -663.60, -551.133E+4, 601, 860, 731, 649e0, -77, 266.760E4, -243.155, 122.68e0, 779, 964.302E+3, 650, -180, 500.649, -204e0, 839.500, -630.885, 442.819e-0, 969.178e-1, -138e-0, 672, 432e0, 765, 829, 592, 90E-3, 3E1, 43, 4, -450.874, 789.932e-4, -526.44E4, -159.767e+1, 372.167e+4, 124E-2, -578, -126e1, -929.883E-2, -81.776, -59E-2, -491E-0, -260.269, 583.532, -765, 373.613, 373.343e+0, -88, 771.982, 450.976e-0, -948, -383, -677e+1, 238E0, -316.149e1, -938, -398.733, -498.769, -370.913, -233e+2, 749.836e0, -443.102E4, 100.426, 751, 922e-3, 891, -736.297, 837e+2, 770, 816.155, -656E+4, -891.111, -339.928e+2, 2.718, 191E+1, -860.207e+0, 988, 811.838, 840.86E3, 962.27, -566.975, -941, 215e3, -872.392, -539, 887.725, -286.945e4, -837.875, 64e-3, -692.821E-2, -932.743, -323.353, -582.861, -999.24E+0, -612, 365.497, -345.14, -803.86e-1, -935, -707E+0, 321, -265.592, -857.873, -566.98e3, 436.237e+4, 221, 367, 816, 87.637E0, -316e-1, -426.356, -130.397E-4, -305.314E1, -172, 790.5E-2, 219e0, -99.548E+4, -520e-0, -847E+3, 912.230e+4, -869, -483, 191E0, 324.759, -38.374e1, -472, -879E4, -216E+0, 325e+1, 20, 434.843E2, -971.734, -532.434E-3, 537e-2, 762E-0, 785E-3, 196e+0, -757.435, 856, 981.906, -891e-2, 100.70, -872.308E1, 101.57, 498.392, -521.826e-3, 867, -601.983, -656.946, -535E+1, -134.546, -899.195, 616, 397.382E3, 214.625e+4, -579E+2, -687, 525.567, -900e-1, 925E-2, 254.75, 171.348e-4, -135, -86e+4, -342, -830.355, -20E+0, 5.354E-3, 92e3, -944, 787, -272.867e0, -576e-3, -752.389E+3, 360.398, 263, -876.798, -28e3, 700, -339.76e-0, 314E0, -904, 995.805, -911E-3, -680e4, -508, 56, 283.116, 444, 435E3, 526e+3, -661, 133.529e4, -534e-2, -742e-2, -846.107, -186.10E-4, -864.595, -532.187, 323.394, 521.958, -735.866, 750.578e-0, -232.554E4, -463e-1, 186.870e+3, 217e-3, 856.537, -690.583e1, -536e+3, 10e+4, -955.966E+2, 120e4, -889E-0, 481, 31.111E-0, -241.40E-3, -351.630, -658, 43, 263.593, 612e-0, 468, -267, -423e+3, 981e+1, -661.854E3, 685.865E0, -959, -673.669e2, 723.756E0, 934.913, 589, -452.177, 683e2, -310.810, -879e-0, 998, 360.559, 893, 119.982, -421.852, 580.837, -786.477E+0, 663, -218E-4, -61.906, -958.519, -801, 257.776, 804.356, -775.673E+1, -982, 309.358, 143.647, -973.443, 326e1, -800e-2, -704, -505, 407, -384e+3, 723.575E-0, 523e-3, 453, -199, 880, -957, -24.18e-1, -483, 88E+1, 193.309, 0.850E+0, 620, 892e0, 403.236e-2, -251.555, 87, -871.511e-2, -98.337, -229.459, -926, -86.44E+3, -529.411E-4, 481E2, -437.473, -675, 801.424e+1, 580E-2, 92.166, 42E-2, 979.681, -68E3, -501.784E-4, -603, -150, 193, -511.916E3, -310, 85E-2, -727E-0, 930, -298E2, -939.796e2, 832.120, 580e+2, -898.520, -433.59, -30.687, -961, 24.951e-0, 803.430, 507.764, -855.122E-0, 169.669e-1, -586.355, 503.820, -613.902, 643, 543, 441, 213.97, -982.563E-3, -55, 480.89e-0, -300e1, -219, 99, 849.516E-0, 39, -873e-0, 507.918e+0, -731.723e-3, 63.780, -501.303e+4, 704, 30.343e+1, -580e-0, -825.414, -838.802E3, -121.456, -521, 371E3, -962.200, 297, -736E+2, -184, -502, -98.326, -550.403e+0, -694.371, -644E2, 717, 898e4, -252.548E-4, 991.338, -549.308e+4, -438, -650.988, -200.659e+0, -612, -167, -297.501, -513, -755.678E-2, -344.835E3, 551, 205, 919.617, 657.876e4, -331, 747.723, 296, -349E+1, -307E-1, -959e4, 108, -808E+0, 102, 9, 228E0, 360.829, -26.821e-2, 233E+0, 253, -682e+4, -255e+4, 740.148, -405.893, 306e-1, -810.405, 277.788, 515.535E+4, -214.682e-3, -807.221, 734, -318, 951, 526e+1, -685.389, 289.854e2, 157e+1, 867e1, -521e+2, -411, 581.788, -41e+2, -421.246e+0, 586e3, 357.456, -841E+0, -34e-3, 999.914, 408, 435.891E-3, 866.891E-2, -376.994, 271.621e-4, -51E1, 828.998e-4, 653.953e+3, -345.784e-1, 850e+3, -443.941, 187.542, -780, -752e-4, 377.59e2, 389, -561.852, 608E3, -993E4, -985.375e0, -414, 346.994, -432.789e4, -956, -904, -317, 13.396e+3, 240, -414E+1, -261.857, -563E+2, -511.27, -176, 415.865, 694, 503.571, 191.59, -220.55e0, -575, 928e+0, 508.602E4, -561, 475e+4, -619.246, -824.903E-4, 244, -762e0, 461.259, -71E4, -972.760, -657.243, -852, -366.2e4, 809, 590.9e1, 88, -295E+1, 886E-0, 102, -798E2, -422.848E1, -984, 108.259, 288.549, -180.512E+2, 489.193E2, 983E1, -383.183E+4, -190.377e-3, -541E2, -773.668, 496, -133.76E-4, 732.784e-0, 624.840e4, -652.591e0, -499, 207.290, -678E-0, -728, 328e+0, 66.836, 843E1, -682.686e3, -187.858e+3, -451.756, 541.990E+0, 452, -332, -219.883, -405, 136.754e2, -953.132, -115.235, 491.21e-4, -791.895, 807, -465.101, 488, 603.144, -695, 54.172E+3, 556, -31e0, -912, -782E+3, 469, 501, -334, -957.874E+4, 341, -549E+0, -948, 81.854E0, 846.782e+4, 236.579e3, 69e+2, -26.867, -996E0, -3.351E+0, -463.90, 323, -331E-3, 236, 219e-1, 944E3, 596.561E+1, -920.983, 614, 863E4, 755e0, -634, 551.976, 993.955e0, -267.705e+4, -497e+0, 178.570e-4, -989, -590.715E+0, 355.886, -730, 864, -127.611E-0, 171.489, -418.819, -917, -214.334e0, -53, -755.816E2, 25.109E-1, -277, -294.162, -306, 902.494, -433, 461, -805.76, -348.623E-3, 8, 772E+0, 873e-2, -0, 108.971, -565.35, -244.517, -846, 180.285E-4, -759, 236e+2, 480.184E0, 631] diff --git a/dev-resources/1000-strings.json b/dev-resources/1000-strings.json deleted file mode 100644 index 701f3f3..0000000 --- a/dev-resources/1000-strings.json +++ /dev/null @@ -1 +0,0 @@ -["string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string","string"] \ No newline at end of file diff --git a/dev-resources/json100b.json b/dev-resources/json100b.json deleted file mode 100644 index 24b9767..0000000 --- a/dev-resources/json100b.json +++ /dev/null @@ -1 +0,0 @@ -{"number":100,"boolean":true,"list":[{"kikka":"kukka"}],"nested":{"map":"this is value","secret":1}} \ No newline at end of file diff --git a/dev-resources/json100k.json b/dev-resources/json100k.json deleted file mode 100644 index bb68bfe..0000000 --- a/dev-resources/json100k.json +++ /dev/null @@ -1 +0,0 @@ -{"results":[{"gender":"female","name":{"title":"mrs","first":"andrea","last":"jensen"},"location":{"street":"1968 assensvej","city":"samsø","state":"nordjylland","postcode":61653},"email":"andrea.jensen@example.com","login":{"username":"heavyleopard105","password":"buffy","salt":"UKfGRyKe","md5":"ff252d31f9d6a7e19f2b28521aa1f367","sha1":"9521848f990d38a6cb707295b8b6de2d6e42a2a9","sha256":"9fc1583d6c09117db30c14811f2f287b331a889c84f197e34b7dd0afb2e7fff1"},"dob":"1968-07-08 20:01:11","registered":"2007-05-16 19:14:08","phone":"27249355","cell":"29065533","id":{"name":"CPR","value":"264203-4324"},"picture":{"large":"https://randomuser.me/api/portraits/women/0.jpg","medium":"https://randomuser.me/api/portraits/med/women/0.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/0.jpg"},"nat":"DK"},{"gender":"male","name":{"title":"mr","first":"guy","last":"gardner"},"location":{"street":"5973 patrick street","city":"shannon","state":"meath","postcode":19959},"email":"guy.gardner@example.com","login":{"username":"ticklishduck240","password":"time","salt":"rBKuQuts","md5":"d174e018f937886bde2962c7b8bd684f","sha1":"0bc1ad9a58dcb77885730b96a4e1e48f043b3160","sha256":"792a4aadb17fb948ea7dfa79d27070289829cca5c37eff3f0b9cab812ae8ef31"},"dob":"1978-11-16 11:20:56","registered":"2012-07-05 08:42:20","phone":"071-072-4663","cell":"081-592-5502","id":{"name":"PPS","value":"2493116T"},"picture":{"large":"https://randomuser.me/api/portraits/men/2.jpg","medium":"https://randomuser.me/api/portraits/med/men/2.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/2.jpg"},"nat":"IE"},{"gender":"female","name":{"title":"mrs","first":"latife","last":"yeşilkaya"},"location":{"street":"4022 mevlana cd","city":"bartın","state":"edirne","postcode":36144},"email":"latife.yeşilkaya@example.com","login":{"username":"tinygorilla450","password":"films","salt":"SorJwZky","md5":"e9fdd8c5b3409b24fee5720a5f39d03d","sha1":"0b03ff01499cb33adefc77cb8da0ba29e3f9d31e","sha256":"db29a83f3a02e4666f8130a3e086126b8c2c0c8ddc83cc3430dd5a8213d78931"},"dob":"1949-07-27 07:30:55","registered":"2016-06-08 23:07:14","phone":"(568)-215-7054","cell":"(557)-462-9511","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/14.jpg","medium":"https://randomuser.me/api/portraits/med/women/14.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/14.jpg"},"nat":"TR"},{"gender":"female","name":{"title":"ms","first":"nicole","last":"patterson"},"location":{"street":"6497 the grove","city":"derby","state":"powys","postcode":"QL11 7YD"},"email":"nicole.patterson@example.com","login":{"username":"greengorilla216","password":"1998","salt":"Vs4V3pHw","md5":"ca46c438a794798358edf0d2ca4904db","sha1":"0eebfa6c26f0f322be1e0745edb45b6f7aa4a2b1","sha256":"c309ffc74616b19907e9a70a7838cb8d2795d14aecf65bcee22f0697f0d88acb"},"dob":"1956-08-04 06:26:17","registered":"2014-05-09 04:36:27","phone":"019467 97455","cell":"0764-342-302","id":{"name":"NINO","value":"OG 57 76 75 W"},"picture":{"large":"https://randomuser.me/api/portraits/women/16.jpg","medium":"https://randomuser.me/api/portraits/med/women/16.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/16.jpg"},"nat":"GB"},{"gender":"female","name":{"title":"miss","first":"barbie","last":"souza"},"location":{"street":"3517 avenida da legalidade","city":"parintins","state":"paraíba","postcode":71087},"email":"barbie.souza@example.com","login":{"username":"bigladybug706","password":"lilly","salt":"Jk7Q4D8r","md5":"7308bc40c6daa2014816172799e07b91","sha1":"9c16fefd1306bfa5b518a54a492ba6bc14a9ab3f","sha256":"52ab4718821aa5d29c09cc085e4ebd97c71ab9ff38280e496fab04b899db65be"},"dob":"1981-01-29 15:13:22","registered":"2005-08-29 23:26:29","phone":"(28) 8206-8049","cell":"(83) 1979-6412","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/37.jpg","medium":"https://randomuser.me/api/portraits/med/women/37.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/37.jpg"},"nat":"BR"},{"gender":"male","name":{"title":"mr","first":"noah","last":"mitchell"},"location":{"street":"1841 20th ave","city":"inwood","state":"alberta","postcode":47882},"email":"noah.mitchell@example.com","login":{"username":"lazysnake222","password":"baldwin","salt":"RLnkxm11","md5":"ae53d3a700feeca3d9f75928a5847ebf","sha1":"d8400ba2c72df5b06c00e204f9e6ca7bd1121ec2","sha256":"897dfc61b31adaaa48b5b9d3a00fcfc9fcfb452c580fe55cb0fb7442b809f0c3"},"dob":"1978-11-07 08:19:19","registered":"2006-04-09 20:54:01","phone":"277-445-7259","cell":"991-890-6275","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/93.jpg","medium":"https://randomuser.me/api/portraits/med/men/93.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/93.jpg"},"nat":"CA"},{"gender":"female","name":{"title":"ms","first":"درسا","last":"محمدخان"},"location":{"street":"3050 شهید مطهری","city":"بوشهر","state":"البرز","postcode":41352},"email":"درسا.محمدخان@example.com","login":{"username":"blackbutterfly880","password":"151515","salt":"fgC6oooc","md5":"29661f93862820415e44dd8ed22eb60f","sha1":"57f3cec8af9be549251251d066ff172903179d34","sha256":"2941de414dbde5eb2816f827f7e5d4e4fbbb7cbed7ddf50edb8da392ec23f78b"},"dob":"1960-05-12 18:02:17","registered":"2011-07-02 00:22:34","phone":"061-45571604","cell":"0928-594-9755","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/17.jpg","medium":"https://randomuser.me/api/portraits/med/women/17.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/17.jpg"},"nat":"IR"},{"gender":"female","name":{"title":"mrs","first":"emma","last":"jean-baptiste"},"location":{"street":"6935 elgin st","city":"delisle","state":"québec","postcode":26914},"email":"emma.jean-baptiste@example.com","login":{"username":"blackgoose967","password":"buddie","salt":"jzy1RPhc","md5":"e38be60f361508b3e802fb6a05e69382","sha1":"95d7e3acc7453f2d2715cd810f636c04c07fd4e6","sha256":"d6f6463a2a3d9a55233f8096b655741b9a14fdf6127c25d765d9fce3e4c35c7c"},"dob":"1991-09-20 21:17:31","registered":"2013-11-13 05:32:30","phone":"447-084-6563","cell":"838-708-6229","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/71.jpg","medium":"https://randomuser.me/api/portraits/med/women/71.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/71.jpg"},"nat":"CA"},{"gender":"female","name":{"title":"miss","first":"olivia","last":"evans"},"location":{"street":"5346 roscommon road","city":"tauranga","state":"tasman","postcode":56642},"email":"olivia.evans@example.com","login":{"username":"heavymeercat203","password":"nudist","salt":"dPoMEebX","md5":"243bb24c4fdc487d41be126685b99e4a","sha1":"049de437ed09b2cb91ed57ed53b5c510f3a67c6a","sha256":"3a298ec9b806bc84d78a1c11c14ee59498c41d6f3b4538e8d93680b8c2175800"},"dob":"1948-10-21 12:18:58","registered":"2012-03-11 22:37:52","phone":"(115)-284-8466","cell":"(212)-792-2299","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/78.jpg","medium":"https://randomuser.me/api/portraits/med/women/78.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/78.jpg"},"nat":"NZ"},{"gender":"male","name":{"title":"mr","first":"milo","last":"ramos"},"location":{"street":"6186 rua amazonas ","city":"colombo","state":"maranhão","postcode":31703},"email":"milo.ramos@example.com","login":{"username":"organicpeacock324","password":"huskies","salt":"S1T0Fw1a","md5":"a41fa8eb7ee0ff8cd38901938f95aca6","sha1":"b03d8e0a3da8575cdf3040e9fd9b0e6a05681221","sha256":"ba5c8969e92ed8ddeb4013e9ca322106d696106056f2a7d9eb5bcf5bb4c3fae9"},"dob":"1949-01-22 14:28:13","registered":"2002-04-29 13:35:06","phone":"(02) 9894-8016","cell":"(78) 2297-6087","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/4.jpg","medium":"https://randomuser.me/api/portraits/med/men/4.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/4.jpg"},"nat":"BR"},{"gender":"male","name":{"title":"mr","first":"manuel","last":"elliott"},"location":{"street":"7798 main road","city":"norwich","state":"hampshire","postcode":"V0A 3XR"},"email":"manuel.elliott@example.com","login":{"username":"organicleopard160","password":"goodgirl","salt":"XxDIaRpP","md5":"1b2fff2cc0219719f77eba4716def238","sha1":"a0e3a73477020c1f880012dc8f89e2c30aa0101e","sha256":"b75529f11a86a819d63b15a1c6b234783797b8405613445d6b79397331c4933a"},"dob":"1985-03-11 08:50:50","registered":"2003-04-25 15:19:37","phone":"019467 17086","cell":"0788-887-995","id":{"name":"NINO","value":"HJ 64 67 29 R"},"picture":{"large":"https://randomuser.me/api/portraits/men/32.jpg","medium":"https://randomuser.me/api/portraits/med/men/32.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/32.jpg"},"nat":"GB"},{"gender":"female","name":{"title":"miss","first":"alexandra","last":"pierce"},"location":{"street":"6349 springfield road","city":"swords","state":"louth","postcode":39524},"email":"alexandra.pierce@example.com","login":{"username":"heavybutterfly691","password":"pippo","salt":"FqCdrhpt","md5":"b0cdf2a0f3e2f917045eb6663672c8bc","sha1":"b31182f7b94f804be383dbdfd1566371b8dd8e49","sha256":"da37b4d8afa2f973e4407c671210b72cb5e1edd761e827bbde9e527d2c9c63ea"},"dob":"1971-07-21 10:10:31","registered":"2009-04-05 13:13:11","phone":"061-652-2664","cell":"081-839-4182","id":{"name":"PPS","value":"1777031T"},"picture":{"large":"https://randomuser.me/api/portraits/women/15.jpg","medium":"https://randomuser.me/api/portraits/med/women/15.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/15.jpg"},"nat":"IE"},{"gender":"female","name":{"title":"miss","first":"geanne","last":"hulleman"},"location":{"street":"2635 kruisstraat","city":"lopik","state":"flevoland","postcode":99242},"email":"geanne.hulleman@example.com","login":{"username":"crazyfish299","password":"gambit","salt":"1g6YD564","md5":"379636906a92d10dad260ec75484b273","sha1":"dd4d9668a84a05169252d2dd272b63ddfb104d4d","sha256":"86bb0d89485d873f9b0b104002ffc77f89cd0374a22c7d6bf1981bff4123ef86"},"dob":"1955-02-19 00:11:50","registered":"2016-05-09 00:27:27","phone":"(436)-211-3896","cell":"(942)-026-9787","id":{"name":"BSN","value":"06488471"},"picture":{"large":"https://randomuser.me/api/portraits/women/34.jpg","medium":"https://randomuser.me/api/portraits/med/women/34.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/34.jpg"},"nat":"NL"},{"gender":"female","name":{"title":"miss","first":"پریا","last":"کریمی"},"location":{"street":"3111 کوی نصر","city":"اهواز","state":"کرمان","postcode":38622},"email":"پریا.کریمی@example.com","login":{"username":"organicbear371","password":"superfly","salt":"aFFofnvy","md5":"fc422a8784f4d4b48f1832d0094f34bb","sha1":"dd7d5ab9d3edf6a212025bc7c79ae2c1e64777bc","sha256":"e8fe13007a6c35252d35e6b569f3899e7aca01b183b4beb1f6fef631355e1174"},"dob":"1948-06-18 09:02:42","registered":"2005-03-02 01:11:21","phone":"083-30647026","cell":"0935-560-4068","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/55.jpg","medium":"https://randomuser.me/api/portraits/med/women/55.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/55.jpg"},"nat":"IR"},{"gender":"male","name":{"title":"mr","first":"mohamed","last":"roman"},"location":{"street":"3579 calle del prado","city":"zaragoza","state":"asturias","postcode":72815},"email":"mohamed.roman@example.com","login":{"username":"whitelion786","password":"roadrunn","salt":"ChOeSt8V","md5":"481962810ac904b45004d0ad2c68542d","sha1":"98bca33abe569c55b6134c806b19e80b3db3693f","sha256":"5e5db99ae103db6def5f0b100ded9e4a618e19a7b3366d98b4c04bfb9f7314e8"},"dob":"1988-09-19 03:20:43","registered":"2004-11-11 07:16:46","phone":"932-304-528","cell":"601-964-500","id":{"name":"DNI","value":"27000171-F"},"picture":{"large":"https://randomuser.me/api/portraits/men/13.jpg","medium":"https://randomuser.me/api/portraits/med/men/13.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/13.jpg"},"nat":"ES"},{"gender":"female","name":{"title":"ms","first":"eevi","last":"lampinen"},"location":{"street":"4288 nordenskiöldinkatu","city":"iitti","state":"åland","postcode":86078},"email":"eevi.lampinen@example.com","login":{"username":"silverleopard232","password":"canada","salt":"9K7SwI7e","md5":"7c40d985a9ecb5ba29f79a9c5d015a04","sha1":"ba90a1fdc3aaca71d4bf4859d97037d5d74b2872","sha256":"f7850a912b2a6f628a09bb600e92d0ffa645f16fd74d271bce25ed30c0f3c5f8"},"dob":"1979-07-17 19:02:20","registered":"2004-04-14 06:36:54","phone":"02-406-029","cell":"040-807-83-34","id":{"name":"HETU","value":"879-2629"},"picture":{"large":"https://randomuser.me/api/portraits/women/21.jpg","medium":"https://randomuser.me/api/portraits/med/women/21.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/21.jpg"},"nat":"FI"},{"gender":"female","name":{"title":"mrs","first":"angela","last":"austin"},"location":{"street":"2919 new road","city":"newport","state":"dyfed","postcode":"Z62 2TP"},"email":"angela.austin@example.com","login":{"username":"ticklishrabbit161","password":"bigdog1","salt":"tH8yvh28","md5":"39ee7014d46c0119b3067ba18428e3ba","sha1":"cecb98623220d553a8e436d5187ff77460d6407d","sha256":"c9d7a15808fdc4a42af8c242a2512c9e3e7ab16dd364a44c9973919859fc90f2"},"dob":"1961-02-22 03:52:14","registered":"2010-08-26 02:18:54","phone":"015395 80743","cell":"0774-241-838","id":{"name":"NINO","value":"RH 60 47 82 S"},"picture":{"large":"https://randomuser.me/api/portraits/women/56.jpg","medium":"https://randomuser.me/api/portraits/med/women/56.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/56.jpg"},"nat":"GB"},{"gender":"male","name":{"title":"mr","first":"emre","last":"durmaz"},"location":{"street":"8549 anafartalar cd","city":"bayburt","state":"kırşehir","postcode":83517},"email":"emre.durmaz@example.com","login":{"username":"whitefish122","password":"opus","salt":"XvkN3hFJ","md5":"b5eb23dcf8602fb6829661bb5417dbf1","sha1":"670e1b294e7f20fd9777d051d576b1ba04ed23f4","sha256":"a830c35175b42933c5ec5b0355edabce09f65e662daf0e524a326789e388cea7"},"dob":"1974-07-29 10:33:15","registered":"2015-12-03 12:03:15","phone":"(248)-981-0837","cell":"(437)-763-6034","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/31.jpg","medium":"https://randomuser.me/api/portraits/med/men/31.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/31.jpg"},"nat":"TR"},{"gender":"male","name":{"title":"mr","first":"magnus","last":"christensen"},"location":{"street":"1933 mariehøj","city":"nørre sundby","state":"hovedstaden","postcode":98320},"email":"magnus.christensen@example.com","login":{"username":"whitekoala252","password":"vikings","salt":"Gl7MCC28","md5":"45f0bd96ff51461489eafd2a084dfcc9","sha1":"2892f3848d5ad83c7664278f4ed1ed55e9f4c2c6","sha256":"acbc27484cefc45f64cae6e6bd95ad0bf8765f527fbd7451babee484a64a1c68"},"dob":"1974-01-28 18:34:57","registered":"2015-05-14 15:58:45","phone":"06051550","cell":"54725818","id":{"name":"CPR","value":"486806-3565"},"picture":{"large":"https://randomuser.me/api/portraits/men/62.jpg","medium":"https://randomuser.me/api/portraits/med/men/62.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/62.jpg"},"nat":"DK"},{"gender":"female","name":{"title":"mrs","first":"sedef","last":"erbay"},"location":{"street":"4029 mevlana cd","city":"yalova","state":"konya","postcode":53121},"email":"sedef.erbay@example.com","login":{"username":"purplesnake784","password":"tito","salt":"HS4y39tD","md5":"cb568271b96462f69b73629b4f08c0a6","sha1":"a60262bacae30f7093c116757a31ad5cf6b56594","sha256":"fe1f9b6450af9755fba08e2265d394de46804784afbbeb1a6ad0950ae4859d8d"},"dob":"1969-11-27 21:00:21","registered":"2010-04-26 12:40:38","phone":"(542)-039-1403","cell":"(416)-223-7543","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/82.jpg","medium":"https://randomuser.me/api/portraits/med/women/82.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/82.jpg"},"nat":"TR"},{"gender":"female","name":{"title":"miss","first":"dora","last":"dunn"},"location":{"street":"6650 dogwood ave","city":"green bay","state":"nebraska","postcode":29761},"email":"dora.dunn@example.com","login":{"username":"bigbear743","password":"bigfoot","salt":"CuY9Y1JB","md5":"2c8ed27001f29f3175de8253ef40575b","sha1":"35c1cf9fa41ce19d9fe3ad3f9389e253a2ea9c42","sha256":"93b47abd61b3ff64b2614ad2224117d49aa236cead2c2c2a75ecd72d2036db20"},"dob":"1969-09-05 12:04:23","registered":"2009-12-02 07:53:50","phone":"(646)-606-7885","cell":"(728)-989-0226","id":{"name":"SSN","value":"932-33-3286"},"picture":{"large":"https://randomuser.me/api/portraits/women/32.jpg","medium":"https://randomuser.me/api/portraits/med/women/32.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/32.jpg"},"nat":"US"},{"gender":"female","name":{"title":"miss","first":"elizabeth","last":"holt"},"location":{"street":"1302 victoria road","city":"tullamore","state":"clare","postcode":79510},"email":"elizabeth.holt@example.com","login":{"username":"blacklion179","password":"1222","salt":"fTCV3duW","md5":"c5f18be9e743667e1af9bac1bd30f444","sha1":"483a790f98d05da15832b2d8bb3a9855adfcabf3","sha256":"aec151333135935a344db1b674076904bab5703c18419254e293ff8abd0f9b0a"},"dob":"1970-02-04 23:49:01","registered":"2016-07-08 17:48:43","phone":"031-075-5073","cell":"081-860-6150","id":{"name":"PPS","value":"0597687T"},"picture":{"large":"https://randomuser.me/api/portraits/women/82.jpg","medium":"https://randomuser.me/api/portraits/med/women/82.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/82.jpg"},"nat":"IE"},{"gender":"male","name":{"title":"mr","first":"nathaniel","last":"robinson"},"location":{"street":"6112 plum st","city":"mackay","state":"western australia","postcode":4213},"email":"nathaniel.robinson@example.com","login":{"username":"ticklishduck617","password":"lefty","salt":"rQE9jOf1","md5":"9d7f0713b0d72d7a354d92e95a7f8f59","sha1":"b2ba1d46c080d537ec586b4638bddb1e9f68934a","sha256":"fe3016beefe6ed4447908e48a1fa79c0874bdf9202240bbfb47c075bfb5d2147"},"dob":"1969-08-01 03:51:08","registered":"2013-04-09 22:11:27","phone":"00-5948-9651","cell":"0474-328-243","id":{"name":"TFN","value":"608726387"},"picture":{"large":"https://randomuser.me/api/portraits/men/5.jpg","medium":"https://randomuser.me/api/portraits/med/men/5.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/5.jpg"},"nat":"AU"},{"gender":"female","name":{"title":"miss","first":"jeanne","last":"coleman"},"location":{"street":"4360 saddle dr","city":"coral springs","state":"new hampshire","postcode":89802},"email":"jeanne.coleman@example.com","login":{"username":"browncat424","password":"jenna","salt":"N2cPt6wu","md5":"08c78dfeb73478380cc5bc492236453a","sha1":"f5e00855a3680cb22d9330e87c697b3eee14fdec","sha256":"26c865928188d30d2a9d609d0960cae33a3eb23e04525639415b1e8640ef584e"},"dob":"1951-11-17 02:17:38","registered":"2011-02-15 04:12:43","phone":"(977)-915-6527","cell":"(677)-997-9428","id":{"name":"SSN","value":"594-13-2412"},"picture":{"large":"https://randomuser.me/api/portraits/women/32.jpg","medium":"https://randomuser.me/api/portraits/med/women/32.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/32.jpg"},"nat":"US"},{"gender":"male","name":{"title":"mr","first":"russell","last":"byrd"},"location":{"street":"2538 depaul dr","city":"roseburg","state":"new jersey","postcode":71841},"email":"russell.byrd@example.com","login":{"username":"orangelion502","password":"shei","salt":"pWyZgwny","md5":"d13a91d5e3fcbba3f99e7cacbc503254","sha1":"98ab9c47381776b777453a6cec3ae82de76d4719","sha256":"822795ebee058b3543c6836c9c396243cfdcab59f1254119b6a1d5b4a66005b1"},"dob":"1954-06-12 17:27:47","registered":"2003-05-06 05:26:28","phone":"(943)-496-4820","cell":"(960)-244-9040","id":{"name":"SSN","value":"332-51-4105"},"picture":{"large":"https://randomuser.me/api/portraits/men/75.jpg","medium":"https://randomuser.me/api/portraits/med/men/75.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/75.jpg"},"nat":"US"},{"gender":"male","name":{"title":"monsieur","first":"théo","last":"leroux"},"location":{"street":"3198 rue de l'église","city":"ballens","state":"luzern","postcode":9968},"email":"théo.leroux@example.com","login":{"username":"heavyduck770","password":"pictere","salt":"XOwZilC6","md5":"4d26ecea7d20c82c21399fa1b995fd49","sha1":"edc807d2fa8fec156a1ba7d54b89ff8fc03c7b13","sha256":"e946e1950ed458482e1d74633bb79f0f5940618e93cf3dcc46608e88cd6f2502"},"dob":"1960-04-28 10:40:03","registered":"2015-06-02 03:50:49","phone":"(432)-387-5371","cell":"(621)-313-8335","id":{"name":"AVS","value":"756.NJVD.INKI.63"},"picture":{"large":"https://randomuser.me/api/portraits/men/55.jpg","medium":"https://randomuser.me/api/portraits/med/men/55.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/55.jpg"},"nat":"CH"},{"gender":"female","name":{"title":"miss","first":"mestan","last":"velioğlu"},"location":{"street":"4859 bağdat cd","city":"bartın","state":"erzurum","postcode":85147},"email":"mestan.velioğlu@example.com","login":{"username":"yellowleopard234","password":"cosworth","salt":"oURbOXr0","md5":"c76cf230d2fae68f064d5570e7f089eb","sha1":"29bbd5b8ceb595f00c335fee5b3ed4f21189fe41","sha256":"c21d5478af2fdba39d27321ca144cb4b2d9c1f50c61c384c48cf067d545e00e7"},"dob":"1982-01-01 19:40:17","registered":"2011-03-19 06:39:19","phone":"(688)-903-1625","cell":"(500)-669-7105","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/76.jpg","medium":"https://randomuser.me/api/portraits/med/women/76.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/76.jpg"},"nat":"TR"},{"gender":"male","name":{"title":"mr","first":"malone","last":"perez"},"location":{"street":"8337 rue bony","city":"brest","state":"haute-marne","postcode":26968},"email":"malone.perez@example.com","login":{"username":"beautifulpanda320","password":"forrest","salt":"NRuxwb4z","md5":"1aaedc29b04da4b3ea0b14352e2ba0d0","sha1":"3c54a4daef87975a46108abdf7dd0e3343c556f8","sha256":"6b017559ad67c0e69d51b8333c3f077b95fc9cf380f6f4a7ecf24514157e59fc"},"dob":"1985-11-17 16:46:55","registered":"2002-10-04 10:54:10","phone":"04-14-80-04-54","cell":"06-43-92-85-73","id":{"name":"INSEE","value":"1851044397859 73"},"picture":{"large":"https://randomuser.me/api/portraits/men/55.jpg","medium":"https://randomuser.me/api/portraits/med/men/55.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/55.jpg"},"nat":"FR"},{"gender":"male","name":{"title":"mr","first":"mariano","last":"suarez"},"location":{"street":"8978 calle de bravo murillo","city":"toledo","state":"andalucía","postcode":43396},"email":"mariano.suarez@example.com","login":{"username":"organicfrog392","password":"zhuang","salt":"tI8SGVlt","md5":"90ba2ffb473b98e7a0c9d64c54d591cc","sha1":"4466be4eac8fb5512e841835e1e1fbda1b30bb83","sha256":"7b62b0f7d2f8564f764cf8bf6054dd39db0ceaae36aba9d2194d401f59e87f3b"},"dob":"1989-12-20 11:57:48","registered":"2016-01-08 18:00:46","phone":"959-188-121","cell":"618-835-210","id":{"name":"DNI","value":"51787197-L"},"picture":{"large":"https://randomuser.me/api/portraits/men/95.jpg","medium":"https://randomuser.me/api/portraits/med/men/95.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/95.jpg"},"nat":"ES"},{"gender":"female","name":{"title":"ms","first":"cathy","last":"fowler"},"location":{"street":"8591 church lane","city":"leicester","state":"surrey","postcode":"V84 9SH"},"email":"cathy.fowler@example.com","login":{"username":"redpeacock279","password":"ling","salt":"WlF8XVHE","md5":"eb508c3b7afc8a8aaabb20a0ec6b4d3e","sha1":"9aca399053f2aeb3fc4db2b9d5175ba2f01f52fd","sha256":"e994d7a9dd31d79a8214c8a83665634e1e7e2d8743d95224ff2bd7cd21859120"},"dob":"1993-05-21 20:56:16","registered":"2009-02-23 02:29:49","phone":"015395 32599","cell":"0788-838-644","id":{"name":"NINO","value":"XA 81 62 54 J"},"picture":{"large":"https://randomuser.me/api/portraits/women/86.jpg","medium":"https://randomuser.me/api/portraits/med/women/86.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/86.jpg"},"nat":"GB"},{"gender":"male","name":{"title":"mr","first":"keith","last":"lopez"},"location":{"street":"1582 oak lawn ave","city":"tamworth","state":"australian capital territory","postcode":7268},"email":"keith.lopez@example.com","login":{"username":"blackcat453","password":"muscle","salt":"tmqKfty6","md5":"907ea05301ed2039814e6f46981ebcab","sha1":"07f8d70f3ce12f211af194cb234e063a9495bac8","sha256":"145f9aaabea876f6b7aba24f270228d622f6451ffbdd4ed74aa5083dcee1c0da"},"dob":"1961-11-11 07:40:07","registered":"2004-09-24 13:18:16","phone":"06-3405-7646","cell":"0481-957-604","id":{"name":"TFN","value":"193860449"},"picture":{"large":"https://randomuser.me/api/portraits/men/71.jpg","medium":"https://randomuser.me/api/portraits/med/men/71.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/71.jpg"},"nat":"AU"},{"gender":"female","name":{"title":"ms","first":"eevi","last":"salonen"},"location":{"street":"8454 aleksanterinkatu","city":"oripää","state":"southern ostrobothnia","postcode":12443},"email":"eevi.salonen@example.com","login":{"username":"silverrabbit624","password":"surf","salt":"wCso6p96","md5":"ab9f8a3b6b52bf7f337e94e5af16ac80","sha1":"0eca47f1b4aabfaa34afc31b13df81999aa5918c","sha256":"1b268de1a936507d12dfeb605d67ee293274a4596ca2904898e335d95eeeb1f9"},"dob":"1962-09-17 18:27:15","registered":"2010-10-26 05:30:33","phone":"06-678-077","cell":"045-436-76-37","id":{"name":"HETU","value":"962-728R"},"picture":{"large":"https://randomuser.me/api/portraits/women/55.jpg","medium":"https://randomuser.me/api/portraits/med/women/55.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/55.jpg"},"nat":"FI"},{"gender":"female","name":{"title":"miss","first":"colleen","last":"gregory"},"location":{"street":"7206 karen dr","city":"mackay","state":"victoria","postcode":2818},"email":"colleen.gregory@example.com","login":{"username":"blackpanda169","password":"emmanuel","salt":"tqdEj7xM","md5":"509a6610ebb8c0e7961373aedc3104fb","sha1":"33518d9043889f1fcf2d92392b4a5fadaa901bf5","sha256":"96bbacb5a0dfb2f735d98a6428f71b8cd826d3f084e64b80ab963928188e79b1"},"dob":"1994-02-02 23:13:34","registered":"2010-04-25 00:57:04","phone":"00-5317-5021","cell":"0423-061-133","id":{"name":"TFN","value":"273003610"},"picture":{"large":"https://randomuser.me/api/portraits/women/3.jpg","medium":"https://randomuser.me/api/portraits/med/women/3.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/3.jpg"},"nat":"AU"},{"gender":"female","name":{"title":"ms","first":"vanessa","last":"ward"},"location":{"street":"3793 groveland terrace","city":"springfield","state":"texas","postcode":82762},"email":"vanessa.ward@example.com","login":{"username":"orangebear785","password":"dracula","salt":"yr9Z4uX9","md5":"c6d0f268b3ed25b1cff9c9468f61d5e3","sha1":"51c257398a797c8f24609bf01d6f63483dc8ebac","sha256":"678daf76a27f3986c232bb1af8be7f55893a7bdee67ecf5d3a91d2cd1c975f60"},"dob":"1972-12-22 16:48:32","registered":"2008-06-22 19:05:13","phone":"(425)-025-0233","cell":"(003)-476-4768","id":{"name":"SSN","value":"592-61-7767"},"picture":{"large":"https://randomuser.me/api/portraits/women/71.jpg","medium":"https://randomuser.me/api/portraits/med/women/71.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/71.jpg"},"nat":"US"},{"gender":"female","name":{"title":"ms","first":"sara","last":"kristensen"},"location":{"street":"9226 paltholmterrasserne","city":"ansager","state":"midtjylland","postcode":88303},"email":"sara.kristensen@example.com","login":{"username":"orangefrog816","password":"mingus","salt":"bIfBXnPN","md5":"ec1672a0ee819d698aa16da37ca5685c","sha1":"1778da0b51dac26f0fc88800d54d2b76697f377d","sha256":"11909b3cfb751dde432e6b0f288db28ca9e1d72ae97e5fcd642b7f720b67c1b5"},"dob":"1976-06-14 01:00:09","registered":"2012-12-10 00:13:13","phone":"03732126","cell":"64173003","id":{"name":"CPR","value":"779799-7832"},"picture":{"large":"https://randomuser.me/api/portraits/women/21.jpg","medium":"https://randomuser.me/api/portraits/med/women/21.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/21.jpg"},"nat":"DK"},{"gender":"male","name":{"title":"mr","first":"luís figo","last":"das neves"},"location":{"street":"9270 rua rio de janeiro ","city":"araçatuba","state":"distrito federal","postcode":99103},"email":"luís figo.dasneves@example.com","login":{"username":"beautifulsnake237","password":"bigpoppa","salt":"xTzzMQAb","md5":"483623a0b8b7187240d5ebc038b7f0f5","sha1":"3b670fa6fe41f13c36bf42719d4fca72ea0f7ca7","sha256":"0cdbe20431fea2c3ef2ce07993bbfabdb1ab913b955c48380da66aeb1ec84932"},"dob":"1976-11-06 06:37:21","registered":"2004-08-02 06:27:33","phone":"(83) 0387-2530","cell":"(09) 7671-1437","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/57.jpg","medium":"https://randomuser.me/api/portraits/med/men/57.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/57.jpg"},"nat":"BR"},{"gender":"female","name":{"title":"ms","first":"آنیتا","last":"سهيلي راد"},"location":{"street":"6209 موسیوند","city":"کرج","state":"فارس","postcode":27832},"email":"آنیتا.سهيليراد@example.com","login":{"username":"brownpeacock157","password":"woohoo","salt":"1zDje3LY","md5":"512b93ad5e6b502184df3893a9b37f73","sha1":"67ae62ecf64e5421c62319db8d22a6620efc5e5c","sha256":"1032c45593ba3059cb412c475db467ab8c91258623f304bce6bb2e57eccb70eb"},"dob":"1944-10-07 13:21:09","registered":"2005-10-14 12:40:59","phone":"039-64466829","cell":"0910-508-3145","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/60.jpg","medium":"https://randomuser.me/api/portraits/med/women/60.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/60.jpg"},"nat":"IR"},{"gender":"male","name":{"title":"mr","first":"آراد","last":"قاسمی"},"location":{"street":"1062 استاد نجات‌اللهی","city":"ساوه","state":"یزد","postcode":29353},"email":"آراد.قاسمی@example.com","login":{"username":"ticklishkoala372","password":"nostromo","salt":"qKuMX4un","md5":"c9453bafb77c9204362797bbe2aabad1","sha1":"d6ce8597e7ba99fef6a650ea7cc863e95f5554bc","sha256":"12b31f4ca1a1db150e7c7afbf0c6a3d559196f51822e4ce481feb78be4df484e"},"dob":"1952-03-01 17:12:59","registered":"2013-09-20 06:39:06","phone":"034-75040063","cell":"0979-490-1872","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/96.jpg","medium":"https://randomuser.me/api/portraits/med/men/96.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/96.jpg"},"nat":"IR"},{"gender":"female","name":{"title":"mrs","first":"lotte","last":"schmid"},"location":{"street":"8378 lessingstraße","city":"chemnitzer land","state":"niedersachsen","postcode":22539},"email":"lotte.schmid@example.com","login":{"username":"purpleladybug653","password":"tzpvaw","salt":"my2AK2ss","md5":"966d7502e27ac243de2410679810fd4c","sha1":"bc201822e1d9774e5d79074e7b3948df46fe3b43","sha256":"8315d9fc679040a15a943879d2beaff2335280d2f591965366ae453968a0a408"},"dob":"1968-08-28 21:24:42","registered":"2008-05-03 18:22:39","phone":"0106-8358988","cell":"0171-5736510","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/59.jpg","medium":"https://randomuser.me/api/portraits/med/women/59.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/59.jpg"},"nat":"DE"},{"gender":"female","name":{"title":"madame","first":"maélie","last":"guillot"},"location":{"street":"7554 rue denfert-rochereau","city":"chapelle-sur-moudon","state":"neuchâtel","postcode":5791},"email":"maélie.guillot@example.com","login":{"username":"bigduck160","password":"zildjian","salt":"78lTw7v8","md5":"7bddac3b58defadfe9126fe59b793be2","sha1":"14d37d4604aca616d3cfb6760c69d7b5d7468c30","sha256":"c4a6b1e9e9c7a7bf34a58b93a5c5bbffd4e16a456f3727261cc04e174f35c5ea"},"dob":"1981-06-07 12:50:31","registered":"2010-09-21 21:13:40","phone":"(672)-319-4472","cell":"(844)-796-8875","id":{"name":"AVS","value":"756.EXLU.XLNQ.29"},"picture":{"large":"https://randomuser.me/api/portraits/women/20.jpg","medium":"https://randomuser.me/api/portraits/med/women/20.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/20.jpg"},"nat":"CH"},{"gender":"male","name":{"title":"mr","first":"mason","last":"slawa"},"location":{"street":"4039 brock rd","city":"hampton","state":"new brunswick","postcode":30929},"email":"mason.slawa@example.com","login":{"username":"lazylion255","password":"amature","salt":"CwgGsn6x","md5":"362b2f28a96d3da1e0ec665469838085","sha1":"160d2fe95c4334cf85ef2453203ab43f8fad2452","sha256":"19996f762dec821bb393c8d1fa612bc8693d9cb190939c70a3df0e4e00c544ca"},"dob":"1963-03-20 17:38:21","registered":"2004-06-08 14:10:44","phone":"248-755-6937","cell":"994-397-4080","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/36.jpg","medium":"https://randomuser.me/api/portraits/med/men/36.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/36.jpg"},"nat":"CA"},{"gender":"female","name":{"title":"mrs","first":"eléonore","last":"le gall"},"location":{"street":"6425 grande rue","city":"orléans","state":"val-de-marne","postcode":85469},"email":"eléonore.legall@example.com","login":{"username":"bigpeacock980","password":"slayer","salt":"TQTrGKt5","md5":"6d9637c6a602b9f875477664337a870c","sha1":"abdef657136668f3cba0c0fbc2ec3c2f81f9e3be","sha256":"716c802dda0b646edc6327c856a092f1e1390c7affeb155f1da19cdbcf073eb3"},"dob":"1956-04-15 14:32:33","registered":"2012-07-13 16:37:52","phone":"02-19-24-60-50","cell":"06-13-80-19-53","id":{"name":"INSEE","value":"256304882561 94"},"picture":{"large":"https://randomuser.me/api/portraits/women/89.jpg","medium":"https://randomuser.me/api/portraits/med/women/89.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/89.jpg"},"nat":"FR"},{"gender":"female","name":{"title":"mrs","first":"nuria","last":"morales"},"location":{"street":"3574 calle de arganzuela","city":"las palmas de gran canaria","state":"castilla y león","postcode":80062},"email":"nuria.morales@example.com","login":{"username":"redsnake109","password":"carpet","salt":"mEtqCKGu","md5":"026c2605056681aad695b63752f6373a","sha1":"cc1d7676e8ab6995866e5b3b03bb48dd33679dfe","sha256":"4d320dd09d0a5feb5cf05855470661d308c00a47013b04cb8c1d5570bdabc7e4"},"dob":"1986-12-27 00:09:11","registered":"2016-02-11 05:27:57","phone":"989-944-484","cell":"692-709-848","id":{"name":"DNI","value":"46545622-N"},"picture":{"large":"https://randomuser.me/api/portraits/women/32.jpg","medium":"https://randomuser.me/api/portraits/med/women/32.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/32.jpg"},"nat":"ES"},{"gender":"female","name":{"title":"miss","first":"katherine","last":"chambers"},"location":{"street":"2204 grove road","city":"leicester","state":"county londonderry","postcode":"QZ2W 1BQ"},"email":"katherine.chambers@example.com","login":{"username":"bigbutterfly464","password":"camera","salt":"AgeJSvHL","md5":"0a23c990de2d4e7a9d74b04ffc37b49c","sha1":"2e8c117164203d37a365e86dc33686b521516a24","sha256":"06f734d5456bfa7b5714565eec7fd88363764bc0bef6762e7de5098468a87a79"},"dob":"1980-09-21 02:14:05","registered":"2013-06-23 11:27:03","phone":"016977 8385","cell":"0773-720-246","id":{"name":"NINO","value":"WH 92 38 84 C"},"picture":{"large":"https://randomuser.me/api/portraits/women/43.jpg","medium":"https://randomuser.me/api/portraits/med/women/43.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/43.jpg"},"nat":"GB"},{"gender":"female","name":{"title":"ms","first":"efigênia","last":"teixeira"},"location":{"street":"6261 rua principal","city":"jaraguá do sul","state":"bahia","postcode":63881},"email":"efigênia.teixeira@example.com","login":{"username":"silvercat929","password":"frosty","salt":"AbXMKJNh","md5":"cd4bfe3eac7b26d5f537133a0aab79ce","sha1":"10692196ac8298e5ea7fa3d031abb3cc4c8402a8","sha256":"2d4831a29bb80b52ac4b95cb82acfbab3220860788c2dfa386539c7456d9b913"},"dob":"1967-04-18 05:48:38","registered":"2012-04-11 23:58:57","phone":"(11) 8302-1307","cell":"(63) 2652-6274","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/62.jpg","medium":"https://randomuser.me/api/portraits/med/women/62.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/62.jpg"},"nat":"BR"},{"gender":"female","name":{"title":"mrs","first":"carolina","last":"iglesias"},"location":{"street":"7387 calle nebrija","city":"valladolid","state":"comunidad de madrid","postcode":66626},"email":"carolina.iglesias@example.com","login":{"username":"greenkoala272","password":"goodgirl","salt":"uUU8n1Pk","md5":"68e796fdb1aadccc4470cb6347da0cbc","sha1":"7d7553405e07e0f22613098f6c4478742ae8af3a","sha256":"9ce78c3f224bbe9da8fcf1211b6007b09e9761725a488b0d54953c9d4f180cc2"},"dob":"1965-09-17 23:29:10","registered":"2014-04-22 22:54:18","phone":"931-023-735","cell":"686-116-999","id":{"name":"DNI","value":"21009306-W"},"picture":{"large":"https://randomuser.me/api/portraits/women/88.jpg","medium":"https://randomuser.me/api/portraits/med/women/88.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/88.jpg"},"nat":"ES"},{"gender":"male","name":{"title":"mr","first":"barış","last":"mayhoş"},"location":{"street":"4486 bağdat cd","city":"adıyaman","state":"çanakkale","postcode":52233},"email":"barış.mayhoş@example.com","login":{"username":"greenmeercat541","password":"shooter","salt":"rZor3L6i","md5":"87701f3ffad8d811ab49ded3576f0d9b","sha1":"159eab69d434fffee7392d1732e1abe7e013708d","sha256":"d4c72717e28ab4e983bea22bd613d21f212925033235875200c7eca7636b86d8"},"dob":"1974-03-03 10:25:43","registered":"2012-07-28 19:23:17","phone":"(941)-603-2348","cell":"(691)-292-3365","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/29.jpg","medium":"https://randomuser.me/api/portraits/med/men/29.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/29.jpg"},"nat":"TR"},{"gender":"female","name":{"title":"miss","first":"iida","last":"hamalainen"},"location":{"street":"9198 korkeavuorenkatu","city":"sysmä","state":"southern ostrobothnia","postcode":19706},"email":"iida.hamalainen@example.com","login":{"username":"goldenbird764","password":"hill","salt":"D6mFveBm","md5":"c7a8443e602a7d1bc74c3bbec3f503da","sha1":"a7779c3d4b4cd3f483137c51c23718d7dff67fc0","sha256":"232372568887162435ead2b0411fc3a70562a77af04595c28c99fc5c469b409b"},"dob":"1990-12-08 12:05:11","registered":"2004-07-29 15:34:45","phone":"08-659-190","cell":"041-766-80-98","id":{"name":"HETU","value":"1790-490R"},"picture":{"large":"https://randomuser.me/api/portraits/women/94.jpg","medium":"https://randomuser.me/api/portraits/med/women/94.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/94.jpg"},"nat":"FI"},{"gender":"male","name":{"title":"mr","first":"آرتين","last":"پارسا"},"location":{"street":"5139 آزادی","city":"گلستان","state":"سیستان و بلوچستان","postcode":79740},"email":"آرتين.پارسا@example.com","login":{"username":"lazyelephant744","password":"dawn","salt":"xsZcely8","md5":"52a49a439f082e77997ecd41b3913647","sha1":"6523d6c01c0d789c407fc64747a50e18b3626090","sha256":"5639937e30a8b499f6eae05545b2f483ab07fbf052988bded536c4df423bb091"},"dob":"1993-07-18 21:15:32","registered":"2002-05-23 12:15:47","phone":"034-67151764","cell":"0972-978-9649","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/31.jpg","medium":"https://randomuser.me/api/portraits/med/men/31.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/31.jpg"},"nat":"IR"},{"gender":"female","name":{"title":"ms","first":"noémie","last":"young"},"location":{"street":"4710 alfred st","city":"field","state":"british columbia","postcode":94583},"email":"noémie.young@example.com","login":{"username":"silverdog669","password":"123456789","salt":"HrnS8N3l","md5":"5ba01a42c7b2c3ea262a841ed7d6cd25","sha1":"93df86ebd27cc257359fc8b1c0deeae1649110ef","sha256":"96364f8b5d0b6e16641c860433a97e9b90cece6df69c063b271a48bd6c71cc4c"},"dob":"1986-03-07 11:44:45","registered":"2011-07-28 16:29:27","phone":"283-951-3003","cell":"527-215-9392","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/94.jpg","medium":"https://randomuser.me/api/portraits/med/women/94.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/94.jpg"},"nat":"CA"},{"gender":"male","name":{"title":"mr","first":"finn","last":"roberts"},"location":{"street":"2067 maxwell road","city":"napier","state":"northland","postcode":79474},"email":"finn.roberts@example.com","login":{"username":"blackgorilla680","password":"monkey12","salt":"PDEYmMKk","md5":"a540352a74c9285081d4e002ed4b5def","sha1":"af7989d7c96863771f4a5c84873891e6e55286c9","sha256":"ec23506421bc9c895bc062dfe22103a857484f3f265ffc901368128c40d2369f"},"dob":"1953-12-18 10:40:52","registered":"2008-03-02 04:00:54","phone":"(590)-780-5851","cell":"(034)-163-9839","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/25.jpg","medium":"https://randomuser.me/api/portraits/med/men/25.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/25.jpg"},"nat":"NZ"},{"gender":"male","name":{"title":"monsieur","first":"anthony","last":"deschamps"},"location":{"street":"9520 place du 8 février 1962","city":"ogens","state":"schwyz","postcode":7854},"email":"anthony.deschamps@example.com","login":{"username":"goldenladybug375","password":"bear","salt":"lTgDokIM","md5":"24fe824a281b5414650efb04036ac331","sha1":"241dcac8f8264a6b2fa534072610bc76308fddbd","sha256":"5f38b8b34ca3ffd01e545ebf1148bee73d5030c429db3d73dc419fe9ed69c121"},"dob":"1984-07-21 00:29:44","registered":"2005-03-04 11:27:43","phone":"(230)-524-1864","cell":"(652)-955-2060","id":{"name":"AVS","value":"756.WZSI.NKQI.92"},"picture":{"large":"https://randomuser.me/api/portraits/men/95.jpg","medium":"https://randomuser.me/api/portraits/med/men/95.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/95.jpg"},"nat":"CH"},{"gender":"female","name":{"title":"ms","first":"thea","last":"mortensen"},"location":{"street":"1894 ægirsvej","city":"roskilde","state":"syddanmark","postcode":23411},"email":"thea.mortensen@example.com","login":{"username":"tinywolf252","password":"darklord","salt":"EBN5dOvt","md5":"c56ad787d5d552274da2c30f0f5b697f","sha1":"de77667b5bfb45c1f0d3d048368c67c8481b385e","sha256":"941e2905bef7455c511b05844398dd3e3ed9f6582916f95dc3e4daaefdc37ff5"},"dob":"1976-09-06 22:47:53","registered":"2004-12-12 05:58:44","phone":"52529049","cell":"92473777","id":{"name":"CPR","value":"871633-5916"},"picture":{"large":"https://randomuser.me/api/portraits/women/8.jpg","medium":"https://randomuser.me/api/portraits/med/women/8.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/8.jpg"},"nat":"DK"},{"gender":"male","name":{"title":"monsieur","first":"william","last":"bertrand"},"location":{"street":"8091 rue de l'église","city":"corcelles-le-jorat","state":"luzern","postcode":6279},"email":"william.bertrand@example.com","login":{"username":"silverpanda629","password":"getsome","salt":"xSKAxxcn","md5":"46f7b656dfbe371b9a816caaf5b2acb1","sha1":"508316a6ab64edc8463c2feb66eec09ac45f6f56","sha256":"d6dda85062a2b963f29642456df4c633f17b5765c7e3671c86a28217de312c03"},"dob":"1968-06-17 00:30:04","registered":"2004-01-09 06:06:53","phone":"(794)-529-1696","cell":"(711)-854-6848","id":{"name":"AVS","value":"756.JGOA.GMIZ.53"},"picture":{"large":"https://randomuser.me/api/portraits/men/6.jpg","medium":"https://randomuser.me/api/portraits/med/men/6.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/6.jpg"},"nat":"CH"},{"gender":"male","name":{"title":"mr","first":"mathéo","last":"muller"},"location":{"street":"4638 route de genas","city":"toulouse","state":"oise","postcode":90370},"email":"mathéo.muller@example.com","login":{"username":"yellowmouse841","password":"frost","salt":"lCte3Cxy","md5":"89dd28156ba2eb53f9d3081c01af777d","sha1":"6561413dda15315dc2bb2e037851b458cce58a0d","sha256":"8a539fb1939b7054a5b61e3d11f6319cf853f72a05416b7354663c03a3ce2640"},"dob":"1993-11-21 06:26:02","registered":"2012-05-12 02:19:03","phone":"05-02-23-58-02","cell":"06-54-67-35-17","id":{"name":"INSEE","value":"1931026652556 44"},"picture":{"large":"https://randomuser.me/api/portraits/men/65.jpg","medium":"https://randomuser.me/api/portraits/med/men/65.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/65.jpg"},"nat":"FR"},{"gender":"male","name":{"title":"mr","first":"nihal","last":"akay"},"location":{"street":"5239 tunalı hilmi cd","city":"van","state":"isparta","postcode":54402},"email":"nihal.akay@example.com","login":{"username":"browncat742","password":"door","salt":"DSd45PWZ","md5":"e0d09a5438aa571f3622cb96c098a52b","sha1":"9ff70a642620cc677ce42f23472951c0b023f763","sha256":"3f6767ad4f49ec6b5d28e95efb7883dbaa200851659a13f5a20df7162c088d77"},"dob":"1952-10-16 00:18:38","registered":"2012-03-01 21:37:56","phone":"(727)-406-6579","cell":"(512)-076-3896","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/51.jpg","medium":"https://randomuser.me/api/portraits/med/men/51.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/51.jpg"},"nat":"TR"},{"gender":"male","name":{"title":"mr","first":"lance","last":"olson"},"location":{"street":"6980 the drive","city":"bristol","state":"humberside","postcode":"LT0 8HJ"},"email":"lance.olson@example.com","login":{"username":"brownbutterfly350","password":"cohiba","salt":"TduJQcW7","md5":"3e19816cdf32561b9f86f55449bfed88","sha1":"2caf2777dd8b0f67e9e35658e29fd75bb097a707","sha256":"c66ce11faca82cb26d4a5f6a709c5ad2693453656eac10e4e1e9d16075fd0eae"},"dob":"1959-07-31 23:28:46","registered":"2016-08-05 17:36:57","phone":"017683 75438","cell":"0782-363-284","id":{"name":"NINO","value":"XC 84 88 81 H"},"picture":{"large":"https://randomuser.me/api/portraits/men/12.jpg","medium":"https://randomuser.me/api/portraits/med/men/12.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/12.jpg"},"nat":"GB"},{"gender":"male","name":{"title":"mr","first":"cesário","last":"araújo"},"location":{"street":"2139 rua amazonas ","city":"itapipoca","state":"paraíba","postcode":31476},"email":"cesário.araújo@example.com","login":{"username":"purplefrog935","password":"hardcore","salt":"oCb1ufLo","md5":"7bfbea1aeeda194a5b6a67d40f8e768f","sha1":"9422087b0ae9201355bb39ef42c44a6099efc884","sha256":"62851f8838e6aab543e02fd5ad01c4c5fdf8c99876512c27724fc582bfac142c"},"dob":"1965-10-30 17:44:35","registered":"2016-04-15 06:39:09","phone":"(20) 9796-5231","cell":"(42) 0302-6212","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/52.jpg","medium":"https://randomuser.me/api/portraits/med/men/52.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/52.jpg"},"nat":"BR"},{"gender":"male","name":{"title":"mr","first":"adrian","last":"möller"},"location":{"street":"6357 buchenweg","city":"görlitz","state":"niedersachsen","postcode":53600},"email":"adrian.möller@example.com","login":{"username":"blackmouse523","password":"trooper","salt":"oITxdvPF","md5":"762a8dbd7011eaa74e61709b6bb69967","sha1":"ddaed8e60588eec8f861523f75ab2ad209ff1776","sha256":"d1a95ca545b77615cf2c19d63f9ad3f5b404d8d6ea7603a48b2e483d77f40bc0"},"dob":"1990-08-23 03:29:57","registered":"2008-08-30 20:56:15","phone":"0302-7318029","cell":"0175-4985781","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/12.jpg","medium":"https://randomuser.me/api/portraits/med/men/12.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/12.jpg"},"nat":"DE"},{"gender":"male","name":{"title":"mr","first":"edgar","last":"carter"},"location":{"street":"2238 boghall road","city":"wicklow","state":"fingal","postcode":70945},"email":"edgar.carter@example.com","login":{"username":"blackgoose286","password":"blam","salt":"RZuBDvAd","md5":"44673f61e62570f56d66b0bfdf95f354","sha1":"9da02aac92e207a312619fdfca3636350e9b4d32","sha256":"c562393e203d98e42e5e48792e54ab4054f00ff86538b75db9aae46c538e2d2a"},"dob":"1948-01-08 19:58:17","registered":"2013-05-06 05:07:30","phone":"051-476-7017","cell":"081-935-3804","id":{"name":"PPS","value":"1898502T"},"picture":{"large":"https://randomuser.me/api/portraits/men/33.jpg","medium":"https://randomuser.me/api/portraits/med/men/33.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/33.jpg"},"nat":"IE"},{"gender":"female","name":{"title":"mrs","first":"olivia","last":"murto"},"location":{"street":"6398 nordenskiöldinkatu","city":"vesanto","state":"päijät-häme","postcode":40238},"email":"olivia.murto@example.com","login":{"username":"silverbutterfly508","password":"ghost1","salt":"44z5JiyG","md5":"5bc694c51a74fd65139698dd8dc021b7","sha1":"54314741f5845357d570da4e3b8b0eba45dfb3d8","sha256":"a54c5e83522db4547bd97e71c585d58fbf55b79ef52170c11ec087b2a7af0460"},"dob":"1979-07-01 09:29:38","registered":"2004-12-28 17:54:45","phone":"05-800-792","cell":"045-528-58-42","id":{"name":"HETU","value":"679-516V"},"picture":{"large":"https://randomuser.me/api/portraits/women/15.jpg","medium":"https://randomuser.me/api/portraits/med/women/15.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/15.jpg"},"nat":"FI"},{"gender":"female","name":{"title":"mrs","first":"هلیا","last":"حیدری"},"location":{"street":"4049 میدان شمشیری","city":"گلستان","state":"یزد","postcode":59945},"email":"هلیا.حیدری@example.com","login":{"username":"lazycat942","password":"quest","salt":"V7uxfGNI","md5":"69b0c6f6207581f53c9433478751bbbe","sha1":"58eaa817335075243438ce67a1ee021a4e648f30","sha256":"bcf326e2475e264518fa49c8e8ab34ebea197b24e986190f7639d5a277c76340"},"dob":"1946-04-16 01:12:37","registered":"2003-01-14 13:00:42","phone":"025-49942298","cell":"0924-075-6618","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/5.jpg","medium":"https://randomuser.me/api/portraits/med/women/5.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/5.jpg"},"nat":"IR"},{"gender":"male","name":{"title":"mr","first":"darryl","last":"harris"},"location":{"street":"7527 mill road","city":"ratoath","state":"louth","postcode":97754},"email":"darryl.harris@example.com","login":{"username":"smallmeercat135","password":"susie","salt":"ix5TlqRb","md5":"e38c0ad9d44e615515e62e3efb3e2350","sha1":"b066e6d6b3c73e568a0c5051bcbdb8b00121ee3f","sha256":"43dcb243e0334264ec5c3bf44c6c02391b8c9b41f7a82b67f1a974ea8cf09aee"},"dob":"1975-02-27 21:17:35","registered":"2010-02-10 10:57:04","phone":"061-119-4122","cell":"081-649-7380","id":{"name":"PPS","value":"7650611T"},"picture":{"large":"https://randomuser.me/api/portraits/men/99.jpg","medium":"https://randomuser.me/api/portraits/med/men/99.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/99.jpg"},"nat":"IE"},{"gender":"female","name":{"title":"miss","first":"isabel","last":"cano"},"location":{"street":"5907 calle de la democracia","city":"castellón de la plana","state":"galicia","postcode":18258},"email":"isabel.cano@example.com","login":{"username":"greenbutterfly741","password":"raistlin","salt":"bcgAWZbP","md5":"7ba25cb30d5bf733e0dabb723675f242","sha1":"92da2d37c6f27675329cedb11c9593d333e8054e","sha256":"076b1699afd9f96edb0f62c69d8b29051e05563af06c24a9f1e5b041b19e7549"},"dob":"1965-09-09 08:37:27","registered":"2009-01-28 14:10:44","phone":"923-658-965","cell":"624-529-746","id":{"name":"DNI","value":"04686160-I"},"picture":{"large":"https://randomuser.me/api/portraits/women/74.jpg","medium":"https://randomuser.me/api/portraits/med/women/74.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/74.jpg"},"nat":"ES"},{"gender":"female","name":{"title":"miss","first":"vilma","last":"latvala"},"location":{"street":"9246 aleksanterinkatu","city":"juva","state":"north karelia","postcode":59333},"email":"vilma.latvala@example.com","login":{"username":"purpleostrich737","password":"soccer1","salt":"20sbgePD","md5":"83dfe1245e9524872aa31f79eddb43e9","sha1":"931c127784d4b0d6c65d599cb15c770a7075080b","sha256":"42c3f67d602fdefd5df446e40511a72161dd37bbe2e499249cea6a0a71642726"},"dob":"1955-12-21 02:48:28","registered":"2008-04-05 18:04:35","phone":"02-981-381","cell":"049-200-91-91","id":{"name":"HETU","value":"1455-3005"},"picture":{"large":"https://randomuser.me/api/portraits/women/36.jpg","medium":"https://randomuser.me/api/portraits/med/women/36.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/36.jpg"},"nat":"FI"},{"gender":"male","name":{"title":"mr","first":"onur","last":"akyüz"},"location":{"street":"2648 mevlana cd","city":"İstanbul","state":"bartın","postcode":21897},"email":"onur.akyüz@example.com","login":{"username":"organicbutterfly982","password":"penny1","salt":"hn1Tvvdl","md5":"8947d3fc0601556eaa55b12a300a1da8","sha1":"aa1f1857b3576ede45ac9e450b4ba81715b6002f","sha256":"ba75d1ee491b80970c17fea2dc086cc288d8b311c7f00e3f8f2a58d5e8bc4952"},"dob":"1982-12-06 11:21:35","registered":"2012-05-21 06:08:22","phone":"(050)-534-7762","cell":"(065)-792-8534","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/58.jpg","medium":"https://randomuser.me/api/portraits/med/men/58.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/58.jpg"},"nat":"TR"},{"gender":"female","name":{"title":"miss","first":"deniz","last":"kıraç"},"location":{"street":"1810 tunalı hilmi cd","city":"şanlıurfa","state":"nevşehir","postcode":83544},"email":"deniz.kıraç@example.com","login":{"username":"beautifulelephant571","password":"grizzly","salt":"BGgqaOV6","md5":"5ec76e81015153efa9e283941ed7efe9","sha1":"523a3c3ea81fbd349ae8ec87c420acdd401dfb56","sha256":"45a7d68314cc9965b3b612815c93872a8bd5035db3536df78a1d622cce4529e6"},"dob":"1966-04-16 01:37:01","registered":"2011-08-08 18:06:55","phone":"(159)-712-4044","cell":"(258)-117-8766","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/86.jpg","medium":"https://randomuser.me/api/portraits/med/women/86.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/86.jpg"},"nat":"TR"},{"gender":"female","name":{"title":"ms","first":"vanesa","last":"moura"},"location":{"street":"9177 rua santa luzia ","city":"rio grande","state":"maranhão","postcode":59040},"email":"vanesa.moura@example.com","login":{"username":"ticklishbear186","password":"firefigh","salt":"3tISvjtn","md5":"979da24a41acd1b456586887e5ca3ba4","sha1":"99b74dba04e26fe0d98eaf755e1577385e9e8101","sha256":"806dc3d723e868ca85421f5366dcdee67697143eb159f5d5b83c67fa69d703ca"},"dob":"1969-11-10 01:09:21","registered":"2003-04-29 09:09:17","phone":"(13) 8313-7677","cell":"(19) 3350-2971","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/44.jpg","medium":"https://randomuser.me/api/portraits/med/women/44.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/44.jpg"},"nat":"BR"},{"gender":"male","name":{"title":"mr","first":"agustin","last":"castro"},"location":{"street":"9163 calle de tetuán","city":"gijón","state":"canarias","postcode":43098},"email":"agustin.castro@example.com","login":{"username":"orangeleopard942","password":"visa","salt":"7sp6EFLt","md5":"7bf1fbb29f38487938af3ebc2cd65795","sha1":"e658b8233998d3143836ca26b61f79237663a0f4","sha256":"593aa0b66b0737eb755e6df346be611c717a072ddfbe2876a7a308166fd05730"},"dob":"1972-01-19 12:00:25","registered":"2014-06-18 19:30:59","phone":"915-145-533","cell":"685-029-731","id":{"name":"DNI","value":"73396564-K"},"picture":{"large":"https://randomuser.me/api/portraits/men/96.jpg","medium":"https://randomuser.me/api/portraits/med/men/96.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/96.jpg"},"nat":"ES"},{"gender":"male","name":{"title":"mr","first":"lucas","last":"mccoy"},"location":{"street":"3682 camden ave","city":"chesapeake","state":"tennessee","postcode":22424},"email":"lucas.mccoy@example.com","login":{"username":"redlion798","password":"insanity","salt":"jxCR98HD","md5":"a7637c1baaf551bc2b6a2bbee6a66154","sha1":"45deb6d4f23b7be9cd552e26c5876c974c7a6cf4","sha256":"fb47769ddc4e062ea8745653803ce1e260b3193f7b48502bad18ac835e970926"},"dob":"1990-03-21 03:19:22","registered":"2009-05-05 11:51:06","phone":"(955)-824-6261","cell":"(370)-305-4594","id":{"name":"SSN","value":"994-80-9208"},"picture":{"large":"https://randomuser.me/api/portraits/men/26.jpg","medium":"https://randomuser.me/api/portraits/med/men/26.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/26.jpg"},"nat":"US"},{"gender":"female","name":{"title":"mrs","first":"greta","last":"bender"},"location":{"street":"1568 beethovenstraße","city":"kamenz","state":"sachsen-anhalt","postcode":24315},"email":"greta.bender@example.com","login":{"username":"smallwolf393","password":"farmboy","salt":"FdRd2Gdw","md5":"8ba4f2b6fa2fcf0fd4b9fceeea96f0ca","sha1":"a5b45835171c1ee741b711fee84585ddd1fdeecf","sha256":"8fc6f67d7d901e96520742b1521d700209551e633182669180e6b9a7ab4432f7"},"dob":"1948-12-02 11:07:44","registered":"2007-07-18 16:06:40","phone":"0290-7120906","cell":"0170-5786306","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/77.jpg","medium":"https://randomuser.me/api/portraits/med/women/77.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/77.jpg"},"nat":"DE"},{"gender":"male","name":{"title":"mr","first":"jorge","last":"gregory"},"location":{"street":"2114 timber wolf trail","city":"reno","state":"nevada","postcode":36711},"email":"jorge.gregory@example.com","login":{"username":"crazytiger579","password":"stephen","salt":"qMt5KTEH","md5":"39facfc3ccef9acf1308ae4da3d6f903","sha1":"0a6e98677162317a959e2194f8d0003d4d35b6bb","sha256":"23de8670a449aaa2c307ac95e5adc1b14d3c3f63d7f3233d807e093ebd813a1e"},"dob":"1981-09-23 05:43:08","registered":"2015-03-14 23:08:22","phone":"(054)-607-9099","cell":"(204)-883-5737","id":{"name":"SSN","value":"337-31-9738"},"picture":{"large":"https://randomuser.me/api/portraits/men/36.jpg","medium":"https://randomuser.me/api/portraits/med/men/36.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/36.jpg"},"nat":"US"},{"gender":"male","name":{"title":"monsieur","first":"thomas","last":"joly"},"location":{"street":"2745 avenue du fort-caire","city":"peyres-possens","state":"thurgau","postcode":9293},"email":"thomas.joly@example.com","login":{"username":"goldensnake726","password":"alexander","salt":"v1n5q42p","md5":"fe9efcb54fb2d55a2b8d2f5560609b9d","sha1":"318be5d63fe951262f3725f9f93ca4db6364389a","sha256":"db0e6c990d47ceb079e6dbcc7cdf40b230f41e33a7ce74fe89155f4891860326"},"dob":"1957-10-17 21:31:06","registered":"2012-11-14 17:49:44","phone":"(931)-158-8116","cell":"(133)-172-8230","id":{"name":"AVS","value":"756.NORG.POVC.10"},"picture":{"large":"https://randomuser.me/api/portraits/men/18.jpg","medium":"https://randomuser.me/api/portraits/med/men/18.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/18.jpg"},"nat":"CH"},{"gender":"male","name":{"title":"mr","first":"stian","last":"pander"},"location":{"street":"9607 korte minrebroederstraat","city":"hillegom","state":"noord-brabant","postcode":10821},"email":"stian.pander@example.com","login":{"username":"lazyrabbit331","password":"nuan","salt":"tCa4AmDv","md5":"2060fbbd67fa8e25c3f326438dbc8bd2","sha1":"9bf5183cd79ba57a1014eddd23dc6334a2240f0a","sha256":"d19d53f2ac4adbb10a615f2129910540f8e3f7f2f64c3454ee5c1f8f5e2056ca"},"dob":"1969-08-29 09:10:00","registered":"2004-05-01 02:56:04","phone":"(423)-652-5230","cell":"(240)-260-7849","id":{"name":"BSN","value":"34277924"},"picture":{"large":"https://randomuser.me/api/portraits/men/62.jpg","medium":"https://randomuser.me/api/portraits/med/men/62.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/62.jpg"},"nat":"NL"},{"gender":"male","name":{"title":"mr","first":"aidan","last":"evans"},"location":{"street":"3136 gloucester street","city":"invercargill","state":"northland","postcode":25288},"email":"aidan.evans@example.com","login":{"username":"orangebutterfly228","password":"tomtom","salt":"7kP8q5YJ","md5":"20ba1ffc71d90249c7d93db919e80711","sha1":"eed75d68ec7d77f3d9d64737c24882fc971eea45","sha256":"b261fc2c1e9aab4941d751f623a0d9f5fefd51a569be816279df808d31c0c54d"},"dob":"1994-03-15 22:09:29","registered":"2013-01-21 22:49:02","phone":"(334)-541-5481","cell":"(809)-482-8720","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/3.jpg","medium":"https://randomuser.me/api/portraits/med/men/3.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/3.jpg"},"nat":"NZ"},{"gender":"male","name":{"title":"mr","first":"jimi","last":"waara"},"location":{"street":"5349 korkeavuorenkatu","city":"sonkajärvi","state":"satakunta","postcode":99392},"email":"jimi.waara@example.com","login":{"username":"smallgoose786","password":"circus","salt":"gz0BV2cP","md5":"f4a65823c3d57b26322724017be084d6","sha1":"563893a6df310d48a34b94cccdc65f06e76df30b","sha256":"78dcf3eded4309a5d78ce678e650a34f21f31234291ab50b16d2dbc493dfb60b"},"dob":"1975-04-02 02:24:41","registered":"2004-11-25 19:35:48","phone":"02-281-873","cell":"047-072-26-15","id":{"name":"HETU","value":"675-4911"},"picture":{"large":"https://randomuser.me/api/portraits/men/14.jpg","medium":"https://randomuser.me/api/portraits/med/men/14.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/14.jpg"},"nat":"FI"},{"gender":"male","name":{"title":"mr","first":"alex","last":"wilson"},"location":{"street":"2818 maunganui road","city":"taupo","state":"canterbury","postcode":27337},"email":"alex.wilson@example.com","login":{"username":"organickoala975","password":"aptiva","salt":"4RHG5Uwf","md5":"1c923e40675ece09257d0e66c37c480f","sha1":"5d02ec74be84c3d09709d4b5c55717328809a0c0","sha256":"6e2ee121a418facf6eaab7be7ca225431282fd73daa144a38a9a09b70e13f0c5"},"dob":"1948-02-10 05:08:06","registered":"2002-05-01 03:34:55","phone":"(134)-436-4476","cell":"(713)-998-7271","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/51.jpg","medium":"https://randomuser.me/api/portraits/med/men/51.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/51.jpg"},"nat":"NZ"},{"gender":"female","name":{"title":"ms","first":"lilja","last":"huhta"},"location":{"street":"3047 hermiankatu","city":"tyrnävä","state":"northern ostrobothnia","postcode":50784},"email":"lilja.huhta@example.com","login":{"username":"crazybear498","password":"aberdeen","salt":"baVKpLPD","md5":"7c421a0af04623b1878fa1767e8eb734","sha1":"a41fd9a91534a36505d96e45252366037bed187c","sha256":"bef37f8b2b47efa869a7d16aedea7ecfd3c5b037036817ac75a94c4ed84540d6"},"dob":"1946-09-22 02:06:12","registered":"2003-12-18 06:26:08","phone":"09-173-232","cell":"041-265-00-60","id":{"name":"HETU","value":"846-662N"},"picture":{"large":"https://randomuser.me/api/portraits/women/20.jpg","medium":"https://randomuser.me/api/portraits/med/women/20.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/20.jpg"},"nat":"FI"},{"gender":"female","name":{"title":"mrs","first":"asuncion","last":"martinez"},"location":{"street":"7193 calle de segovia","city":"la palma","state":"cantabria","postcode":15224},"email":"asuncion.martinez@example.com","login":{"username":"bigelephant693","password":"family","salt":"mZbfRlpH","md5":"5d5f790bc86b2d47faf344c59fc4d703","sha1":"2e26b9714c8f06cf0a0a6428553731b23579025f","sha256":"ac0d2af2a8aaced32182cc00d9a27a221f27dd1b12c4543bd9a78b3d12735dc2"},"dob":"1986-07-20 04:12:22","registered":"2008-07-26 12:31:41","phone":"948-772-383","cell":"665-735-742","id":{"name":"DNI","value":"06193994-I"},"picture":{"large":"https://randomuser.me/api/portraits/women/69.jpg","medium":"https://randomuser.me/api/portraits/med/women/69.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/69.jpg"},"nat":"ES"},{"gender":"male","name":{"title":"mr","first":"victor","last":"jørgensen"},"location":{"street":"5418 hestehaven","city":"amager","state":"syddanmark","postcode":77864},"email":"victor.jørgensen@example.com","login":{"username":"brownrabbit780","password":"chip","salt":"PjL9ODIK","md5":"9a794af93930fc81cddb2e9d9856e816","sha1":"522e26a07660dd8e25c884c2b4742635218a9929","sha256":"cc7acd3c8d7430f8f135bdd33c411c43f3fa967ddc906bcecbe970e672864d7b"},"dob":"1966-04-30 04:33:46","registered":"2004-07-22 07:19:30","phone":"55134853","cell":"94480689","id":{"name":"CPR","value":"733782-9404"},"picture":{"large":"https://randomuser.me/api/portraits/men/99.jpg","medium":"https://randomuser.me/api/portraits/med/men/99.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/99.jpg"},"nat":"DK"},{"gender":"male","name":{"title":"mr","first":"jonas","last":"mortensen"},"location":{"street":"2982 kildevangen","city":"viby j.","state":"nordjylland","postcode":95145},"email":"jonas.mortensen@example.com","login":{"username":"silverfrog492","password":"scooby1","salt":"wFvPoDMJ","md5":"602eb2871f2f59a5c0d7d5de73202502","sha1":"a34c173e1a180dcff6a405f6b1d763bdf865ed69","sha256":"7261d864eab0961f509a3f72b2c95f4781ca5c90cd1aa8b12394196f1736c0a4"},"dob":"1955-01-20 16:34:26","registered":"2008-11-17 20:19:58","phone":"45738662","cell":"73852795","id":{"name":"CPR","value":"602839-8625"},"picture":{"large":"https://randomuser.me/api/portraits/men/64.jpg","medium":"https://randomuser.me/api/portraits/med/men/64.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/64.jpg"},"nat":"DK"},{"gender":"male","name":{"title":"mr","first":"mimoso","last":"de souza"},"location":{"street":"8117 rua santo antônio ","city":"cuiabá","state":"tocantins","postcode":92847},"email":"mimoso.desouza@example.com","login":{"username":"yellowpeacock651","password":"smart","salt":"GWujGraX","md5":"f7140e0f030eb582df004e0054c3ea0b","sha1":"cc5d2da0fbe074c5973a2dee8d457cc26d821720","sha256":"9d41e9e57e3800679f744d112c44f4c30b721455dbd2bcca4491f7f01bffe6e6"},"dob":"1967-09-26 20:41:43","registered":"2016-03-08 22:33:19","phone":"(16) 9191-4401","cell":"(47) 0829-3835","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/71.jpg","medium":"https://randomuser.me/api/portraits/med/men/71.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/71.jpg"},"nat":"BR"},{"gender":"female","name":{"title":"mrs","first":"katherine","last":"mcdonalid"},"location":{"street":"6745 park avenue","city":"sheffield","state":"clwyd","postcode":"EP05 3DH"},"email":"katherine.mcdonalid@example.com","login":{"username":"blackfish369","password":"anthony","salt":"ML8ryb1v","md5":"2387d99b7108d0bf278f5279b5d17375","sha1":"21ad6bb435326b6799c7c158f550c16484d67b07","sha256":"f92be6823e2d717f298046e9452dc17dbe8e20044120b0baef49ece572c46fe1"},"dob":"1967-10-26 17:58:07","registered":"2005-04-10 12:42:45","phone":"015394 21641","cell":"0746-938-320","id":{"name":"NINO","value":"OM 80 50 73 W"},"picture":{"large":"https://randomuser.me/api/portraits/women/95.jpg","medium":"https://randomuser.me/api/portraits/med/women/95.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/95.jpg"},"nat":"GB"},{"gender":"female","name":{"title":"mademoiselle","first":"justine","last":"bonnet"},"location":{"street":"1832 rue de l'abbé-soulange-bodin","city":"yens","state":"fribourg","postcode":2751},"email":"justine.bonnet@example.com","login":{"username":"heavyostrich691","password":"646464","salt":"gYdcokig","md5":"d9344fdb81b99ce182208a05df27daa0","sha1":"bfb8b1ad75a178b32e9492360ed04900a29b8e4e","sha256":"649c27c45a453c7a9b1a7f16a39094dcd92c00c746e0fe7a935740ad74bebf1e"},"dob":"1990-05-18 23:03:44","registered":"2006-06-22 15:56:24","phone":"(766)-887-4809","cell":"(987)-621-8391","id":{"name":"AVS","value":"756.ZTKP.SKXF.03"},"picture":{"large":"https://randomuser.me/api/portraits/women/35.jpg","medium":"https://randomuser.me/api/portraits/med/women/35.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/35.jpg"},"nat":"CH"},{"gender":"male","name":{"title":"mr","first":"elias","last":"schmidt"},"location":{"street":"6774 wiesenstraße","city":"goslar","state":"sachsen-anhalt","postcode":26534},"email":"elias.schmidt@example.com","login":{"username":"beautifulcat616","password":"ajax","salt":"Bhvp2ZJX","md5":"9441c9c27243b5200c4ecb155a1b9525","sha1":"6ea38fdf9c843991e4704af450a5e3a1fe9e2113","sha256":"2da6f41ff227d04579e31ed495e50fd62c66b0d6cd443e2d2e6b87a7e00c13dc"},"dob":"1957-08-19 01:07:20","registered":"2012-03-11 21:55:03","phone":"0501-7075359","cell":"0177-3485445","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/14.jpg","medium":"https://randomuser.me/api/portraits/med/men/14.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/14.jpg"},"nat":"DE"},{"gender":"male","name":{"title":"mr","first":"benjamin","last":"kern"},"location":{"street":"8154 mühlenweg","city":"recklinghausen","state":"nordrhein-westfalen","postcode":49465},"email":"benjamin.kern@example.com","login":{"username":"redgoose228","password":"velvet","salt":"LVvRVkCh","md5":"f3524d1e4b2d87a9acbaa3e51e202c12","sha1":"0f37428d6e8e69dcbb4681b93cd41167e144fae5","sha256":"cc794024ce160a853d236d0e1a4fcf4ee472f499509bb962552bab21ec879b70"},"dob":"1953-06-02 12:59:16","registered":"2016-07-21 22:28:10","phone":"0537-8254812","cell":"0176-0485173","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/22.jpg","medium":"https://randomuser.me/api/portraits/med/men/22.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/22.jpg"},"nat":"DE"},{"gender":"female","name":{"title":"ms","first":"rosie","last":"west"},"location":{"street":"1934 the avenue","city":"arklow","state":"south dublin","postcode":70673},"email":"rosie.west@example.com","login":{"username":"purpleostrich764","password":"lespaul","salt":"J1kPgqBQ","md5":"69749f6f0cbb8ab2398262f649d59fa8","sha1":"f0fa2a91a82f21d00b438c98b57b306134405254","sha256":"8f9b89ead2372eda4ce28345a4e39a6ceb4837bebf974bfdbe3e976f9290dc53"},"dob":"1947-03-27 01:51:50","registered":"2014-09-27 19:36:53","phone":"021-611-9408","cell":"081-094-4375","id":{"name":"PPS","value":"4736297T"},"picture":{"large":"https://randomuser.me/api/portraits/women/14.jpg","medium":"https://randomuser.me/api/portraits/med/women/14.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/14.jpg"},"nat":"IE"},{"gender":"female","name":{"title":"miss","first":"wendy","last":"marshall"},"location":{"street":"1110 valley view ln","city":"palm bay","state":"florida","postcode":39273},"email":"wendy.marshall@example.com","login":{"username":"smallswan234","password":"queenie","salt":"slkGUKVl","md5":"53ac462afa1efadd9a6c104e0da8cf96","sha1":"4bf611cb47db8fdcab061709489c7e14f2ea556a","sha256":"438d7116d2ef9dafdf417683e57cea714ad151b84bcff79eac910d3d1d2c706c"},"dob":"1947-01-11 17:45:53","registered":"2003-01-18 00:11:18","phone":"(353)-693-7394","cell":"(393)-816-0375","id":{"name":"SSN","value":"958-22-4766"},"picture":{"large":"https://randomuser.me/api/portraits/women/41.jpg","medium":"https://randomuser.me/api/portraits/med/women/41.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/41.jpg"},"nat":"US"},{"gender":"male","name":{"title":"mr","first":"terry","last":"hall"},"location":{"street":"2752 mockingbird hill","city":"sydney","state":"western australia","postcode":8987},"email":"terry.hall@example.com","login":{"username":"beautifulpeacock296","password":"bobcat","salt":"KhnVkOEj","md5":"4bb4225f0750ebc2dfbc7a9e7278dca2","sha1":"35b58fac71d15002740dddf576dcfd41da9acb23","sha256":"5ec52e0aa5467b2f18ef35cde9256c46a1840c89db6a7bf95c839839c3559ce4"},"dob":"1961-01-01 20:58:39","registered":"2012-11-19 17:18:35","phone":"00-5169-5202","cell":"0406-174-298","id":{"name":"TFN","value":"671679241"},"picture":{"large":"https://randomuser.me/api/portraits/men/55.jpg","medium":"https://randomuser.me/api/portraits/med/men/55.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/55.jpg"},"nat":"AU"},{"gender":"female","name":{"title":"mrs","first":"kristin","last":"shelton"},"location":{"street":"8937 the crescent","city":"armagh","state":"highlands and islands","postcode":"A67 1ZS"},"email":"kristin.shelton@example.com","login":{"username":"blackcat607","password":"ghetto","salt":"TpT3KJna","md5":"1a389e7b357ecc48f718ec8da90704d7","sha1":"edc766b41d4072258d2a357e8b2aff4157b3d543","sha256":"fd1f31a1a3b062c1c8f4d50c7a4ab02d3e191efff8424bd402931e0a129c4be1"},"dob":"1986-09-09 06:29:35","registered":"2012-08-07 12:27:37","phone":"016973 93680","cell":"0710-786-524","id":{"name":"NINO","value":"WJ 46 67 96 B"},"picture":{"large":"https://randomuser.me/api/portraits/women/6.jpg","medium":"https://randomuser.me/api/portraits/med/women/6.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/6.jpg"},"nat":"GB"},{"gender":"male","name":{"title":"mr","first":"leevi","last":"ylitalo"},"location":{"street":"3056 mechelininkatu","city":"lumparland","state":"tavastia proper","postcode":44091},"email":"leevi.ylitalo@example.com","login":{"username":"ticklishgoose697","password":"viagra","salt":"tAvcWUmC","md5":"517ed534211ec311760de5039e5d0d92","sha1":"ec17ca5e1224c9ab0f96a0b793b5969834882303","sha256":"f289febcf95786515206f237961c8c2035ed3dbe96160b49da8fedd5bff8b607"},"dob":"1952-01-24 11:47:27","registered":"2004-06-10 18:40:16","phone":"09-587-367","cell":"045-744-73-48","id":{"name":"HETU","value":"452-275H"},"picture":{"large":"https://randomuser.me/api/portraits/men/69.jpg","medium":"https://randomuser.me/api/portraits/med/men/69.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/69.jpg"},"nat":"FI"},{"gender":"female","name":{"title":"madame","first":"hanaé","last":"pierre"},"location":{"street":"6557 rue dumenge","city":"crissier","state":"st. gallen","postcode":1907},"email":"hanaé.pierre@example.com","login":{"username":"ticklishfrog812","password":"teddy","salt":"1Wlb5h3M","md5":"129e74aa675fe702a78ab1fc71c46134","sha1":"a9b2a72765e96d5da6d366fd439c275e1f7701c8","sha256":"bd57f07a416dd6b889f03903bb60168228333a1c1eb3c62884fd33fb964f7917"},"dob":"1964-07-31 23:27:32","registered":"2007-11-18 16:57:58","phone":"(291)-720-0838","cell":"(324)-270-1772","id":{"name":"AVS","value":"756.WOKS.PECK.78"},"picture":{"large":"https://randomuser.me/api/portraits/women/95.jpg","medium":"https://randomuser.me/api/portraits/med/women/95.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/95.jpg"},"nat":"CH"},{"gender":"male","name":{"title":"mr","first":"batuhan","last":"van den brandt"},"location":{"street":"7229 mariaplaats","city":"aalsmeer","state":"groningen","postcode":62332},"email":"batuhan.vandenbrandt@example.com","login":{"username":"smallsnake822","password":"billbill","salt":"CNvQSpJI","md5":"eb6e6d3de7f9ac341114a42b86b41b00","sha1":"ac8954ae4d9f426ae8f8c1eab40157c456f561d7","sha256":"d588ce42e4c4767583f6445609a128ececf6b75dd50a6e49f8c3173e03ff4535"},"dob":"1965-10-26 00:23:23","registered":"2006-01-25 17:43:32","phone":"(430)-326-2377","cell":"(831)-522-6816","id":{"name":"BSN","value":"23150234"},"picture":{"large":"https://randomuser.me/api/portraits/men/85.jpg","medium":"https://randomuser.me/api/portraits/med/men/85.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/85.jpg"},"nat":"NL"},{"gender":"female","name":{"title":"ms","first":"astrid","last":"madsen"},"location":{"street":"4325 solsortvej","city":"lintrup","state":"sjælland","postcode":61695},"email":"astrid.madsen@example.com","login":{"username":"organicrabbit217","password":"irene","salt":"QLhWR0ZG","md5":"98070b3cc78363f6fb4d08b5d7a2e1ca","sha1":"5512478d773b767d907b2f5f7db2c1d46988a5ec","sha256":"62352356d70e7fb4b2bd26bd8debe988fd2166685f85a386ce445b2899cd80cf"},"dob":"1947-12-06 18:02:20","registered":"2015-10-03 21:17:56","phone":"00032405","cell":"18906457","id":{"name":"CPR","value":"160107-5422"},"picture":{"large":"https://randomuser.me/api/portraits/women/26.jpg","medium":"https://randomuser.me/api/portraits/med/women/26.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/26.jpg"},"nat":"DK"},{"gender":"female","name":{"title":"mrs","first":"lara","last":"schubert"},"location":{"street":"4898 danziger straße","city":"rottweil","state":"schleswig-holstein","postcode":89675},"email":"lara.schubert@example.com","login":{"username":"blueelephant796","password":"1002","salt":"sk2ZLeGi","md5":"af3c1fb3c9f384ef94d7a01b72f5d298","sha1":"d7fd785e8cc9fe23de4e02d9ef021ec5e788cc73","sha256":"f22c65c713ec154ed6f11b3e15ef2c6d6e580d6e4587788185e7fd2093c0108b"},"dob":"1958-04-11 19:12:54","registered":"2004-02-07 00:40:50","phone":"0697-0043253","cell":"0179-2672033","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/87.jpg","medium":"https://randomuser.me/api/portraits/med/women/87.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/87.jpg"},"nat":"DE"},{"gender":"female","name":{"title":"ms","first":"sofia","last":"olsen"},"location":{"street":"5042 skovtoften","city":"horsens","state":"danmark","postcode":53830},"email":"sofia.olsen@example.com","login":{"username":"silverbutterfly362","password":"colombia","salt":"iJZUjuLj","md5":"155a97d927e4a1ec0acc86192bfd8429","sha1":"1226983b8dc9b4f6f7e06fde8a376dba8c4c0ae7","sha256":"b0cc5209c541c6397d20dcb664e3affeb0c4af751a2decd2d813dbad9eec0550"},"dob":"1955-04-02 13:07:52","registered":"2008-04-01 01:37:58","phone":"96364881","cell":"33858806","id":{"name":"CPR","value":"646119-8288"},"picture":{"large":"https://randomuser.me/api/portraits/women/44.jpg","medium":"https://randomuser.me/api/portraits/med/women/44.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/44.jpg"},"nat":"DK"},{"gender":"female","name":{"title":"miss","first":"addison","last":"turner"},"location":{"street":"3474 theodosia street","city":"hamilton","state":"marlborough","postcode":22998},"email":"addison.turner@example.com","login":{"username":"smalldog585","password":"diamond","salt":"2AYEPuQr","md5":"79bcba1b5fd33b42aeb59e4980a73287","sha1":"48c9beea4c02971feb31054e8dfb9c93cafb1cf9","sha256":"5392bf60e2379889e24b35d833f2ba76c4face4830a73dff8a4653e96b04040a"},"dob":"1985-05-27 23:43:19","registered":"2011-07-11 21:10:53","phone":"(893)-270-0208","cell":"(223)-945-8121","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/59.jpg","medium":"https://randomuser.me/api/portraits/med/women/59.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/59.jpg"},"nat":"NZ"},{"gender":"male","name":{"title":"monsieur","first":"léo","last":"martinez"},"location":{"street":"7002 rue de la mairie","city":"bettens","state":"neuchâtel","postcode":1576},"email":"léo.martinez@example.com","login":{"username":"tinyelephant811","password":"konyor","salt":"ihCQ49Lr","md5":"7a0ae95e4794a01fa3de28e2dedeec97","sha1":"02b38ed20466829c72f59bda539c60b418185dd0","sha256":"ce4cef50ef04a256e0ff2342d0afaf16cb04ba1e07a9ee7b50c17c2817983c75"},"dob":"1982-07-05 14:29:24","registered":"2014-12-02 10:32:45","phone":"(817)-317-4706","cell":"(602)-365-8441","id":{"name":"AVS","value":"756.ONZC.EPRQ.74"},"picture":{"large":"https://randomuser.me/api/portraits/men/18.jpg","medium":"https://randomuser.me/api/portraits/med/men/18.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/18.jpg"},"nat":"CH"},{"gender":"female","name":{"title":"ms","first":"alisa","last":"korpi"},"location":{"street":"2467 mannerheimintie","city":"ypäjä","state":"åland","postcode":95941},"email":"alisa.korpi@example.com","login":{"username":"greengorilla428","password":"paradox","salt":"MXjuohKi","md5":"9be0531c9bee70ad42688db35b334416","sha1":"2180a10424a97f4a8bbde58df357facedf71c09d","sha256":"8ee69696e49c61291f4a8c8696bb9fca150c453bd53a4b65997e4e890e1dd215"},"dob":"1981-03-04 08:28:23","registered":"2008-01-15 00:19:31","phone":"04-466-928","cell":"046-255-57-30","id":{"name":"HETU","value":"581-0341"},"picture":{"large":"https://randomuser.me/api/portraits/women/71.jpg","medium":"https://randomuser.me/api/portraits/med/women/71.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/71.jpg"},"nat":"FI"},{"gender":"female","name":{"title":"ms","first":"ariane","last":"patel"},"location":{"street":"7987 oak st","city":"trenton","state":"saskatchewan","postcode":19639},"email":"ariane.patel@example.com","login":{"username":"organictiger869","password":"airport","salt":"Sl5dYfYQ","md5":"805b47605cd358cb216c9aaffedfa52d","sha1":"6f7e2e71db40396bdfb4da7b145eed84fab9538f","sha256":"33270a0f30219b5070d42e349b09f5fe9efc146571c26e3cd2a8ad40bb8dfc48"},"dob":"1988-01-23 23:09:25","registered":"2009-06-13 20:51:58","phone":"714-920-4938","cell":"905-375-2965","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/88.jpg","medium":"https://randomuser.me/api/portraits/med/women/88.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/88.jpg"},"nat":"CA"},{"gender":"female","name":{"title":"mrs","first":"juliette","last":"gagnon"},"location":{"street":"8894 george st","city":"fauquier","state":"british columbia","postcode":16375},"email":"juliette.gagnon@example.com","login":{"username":"orangecat953","password":"marriage","salt":"K0IDJ9Hq","md5":"7e130c8fa05eeaa7db309faaa4f210e4","sha1":"23be4fffff1330e282e4c37864876a4c09088438","sha256":"6adaa1fd560d6533bac08317afa29ae63f643f65f1b0f1b74f64d9f99f318db1"},"dob":"1962-02-08 07:44:03","registered":"2013-02-06 20:02:54","phone":"744-247-0343","cell":"132-991-6677","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/65.jpg","medium":"https://randomuser.me/api/portraits/med/women/65.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/65.jpg"},"nat":"CA"},{"gender":"male","name":{"title":"mr","first":"antoine","last":"girard"},"location":{"street":"6990 rue louis-garrand","city":"nantes","state":"nord","postcode":75416},"email":"antoine.girard@example.com","login":{"username":"biggorilla916","password":"thumbs","salt":"JMPPTUJJ","md5":"4df2c02cc6169adff1fd09477e1b4bf3","sha1":"73c05cfcbe60a182317df9af80ee76b00980855b","sha256":"960b04bee7187e7707d8669cad1726111ed1887249b02be02eebd97bc5199131"},"dob":"1986-01-24 03:07:51","registered":"2011-10-06 19:16:28","phone":"05-96-76-57-28","cell":"06-45-90-20-86","id":{"name":"INSEE","value":"186064490369 55"},"picture":{"large":"https://randomuser.me/api/portraits/men/70.jpg","medium":"https://randomuser.me/api/portraits/med/men/70.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/70.jpg"},"nat":"FR"},{"gender":"female","name":{"title":"miss","first":"inmaculada","last":"moreno"},"location":{"street":"5674 avenida de américa","city":"albacete","state":"aragón","postcode":65722},"email":"inmaculada.moreno@example.com","login":{"username":"ticklishdog811","password":"nine","salt":"nZ0u5In2","md5":"cba268ac53a96bdafb1d4f2845f465fa","sha1":"d14adc31f92230b3e1ca60cc0bebb173ee95ba5f","sha256":"3b117fa0cd8c47fcad6ef3554e20d2b650e5362ede68fa6f11810af1572876c2"},"dob":"1953-07-27 02:46:12","registered":"2007-02-21 17:49:14","phone":"920-572-590","cell":"674-862-053","id":{"name":"DNI","value":"66147293-A"},"picture":{"large":"https://randomuser.me/api/portraits/women/24.jpg","medium":"https://randomuser.me/api/portraits/med/women/24.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/24.jpg"},"nat":"ES"},{"gender":"female","name":{"title":"mrs","first":"sofie","last":"schulte"},"location":{"street":"7118 schulweg","city":"ludwigslust","state":"schleswig-holstein","postcode":99051},"email":"sofie.schulte@example.com","login":{"username":"redleopard333","password":"zhuang","salt":"bV3ulFfT","md5":"661bceceba9815141dd943d85d80d7f0","sha1":"1d3a5e26a337b29e90387c924917458a87361602","sha256":"282711b768e9187b308d30ef9a9b7ea43e87f81130d3ef4bf8df04412e3ba36b"},"dob":"1976-02-29 12:02:26","registered":"2004-10-22 11:59:55","phone":"0980-2292415","cell":"0175-2637134","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/49.jpg","medium":"https://randomuser.me/api/portraits/med/women/49.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/49.jpg"},"nat":"DE"},{"gender":"female","name":{"title":"miss","first":"esmirna","last":"vieira"},"location":{"street":"7154 beco dos namorados","city":"rio grande","state":"amazonas","postcode":67825},"email":"esmirna.vieira@example.com","login":{"username":"orangekoala599","password":"dudley","salt":"cBgUs01N","md5":"daba02c5a81ceb7f122a510c0ac23ea4","sha1":"33eab81ae1cd93838560d8291ab0451cd2e666b8","sha256":"202b42240fb9b82e5b2b0d1220e4b3aa685c883213a15d3eaa07cd599f4bc4a7"},"dob":"1974-07-29 03:52:06","registered":"2003-11-28 13:41:33","phone":"(65) 8362-9278","cell":"(67) 7771-6868","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/12.jpg","medium":"https://randomuser.me/api/portraits/med/women/12.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/12.jpg"},"nat":"BR"},{"gender":"female","name":{"title":"ms","first":"verena","last":"wiese"},"location":{"street":"4382 mühlweg","city":"schierbrok","state":"baden-württemberg","postcode":15866},"email":"verena.wiese@example.com","login":{"username":"tinyswan682","password":"snoopy","salt":"HzwoDHhG","md5":"d3a9ec43bcc9532ce1f5c2933f3b5b77","sha1":"aa8ae2efdc0e2020bfc201f73276c90c461eb307","sha256":"845b964bf0d84068c1b545847d838ccfa4a5bef2f729d7243fd984b263d5d2a8"},"dob":"1956-01-04 06:40:14","registered":"2015-01-06 19:13:41","phone":"0480-7392547","cell":"0179-7106535","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/10.jpg","medium":"https://randomuser.me/api/portraits/med/women/10.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/10.jpg"},"nat":"DE"},{"gender":"male","name":{"title":"mr","first":"jo","last":"roossien"},"location":{"street":"9505 kanaalstraat","city":"waterland","state":"flevoland","postcode":78902},"email":"jo.roossien@example.com","login":{"username":"goldenrabbit305","password":"nineinch","salt":"v6hRCegc","md5":"c0dc4b1aaf2831b64528eabbb9220e77","sha1":"e7f4bb0da271d1cc92581c36a7e381ff32944508","sha256":"adea58f944ed5f3c833deec56be0dccb12945e768fc5f64808ae74d4f63394f0"},"dob":"1983-06-04 15:43:20","registered":"2002-07-07 16:34:32","phone":"(190)-491-3163","cell":"(475)-903-5579","id":{"name":"BSN","value":"72728147"},"picture":{"large":"https://randomuser.me/api/portraits/men/25.jpg","medium":"https://randomuser.me/api/portraits/med/men/25.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/25.jpg"},"nat":"NL"},{"gender":"male","name":{"title":"mr","first":"lauri","last":"wiitala"},"location":{"street":"8203 tehtaankatu","city":"turku","state":"kymenlaakso","postcode":93177},"email":"lauri.wiitala@example.com","login":{"username":"tinyostrich539","password":"thuglife","salt":"DDqwkZgi","md5":"a430681319d0b01b798dbb606bc6f806","sha1":"dddfc01142d4e3e9b72a805002545601ddfeef8e","sha256":"9583a3951c410846440dc9762af40f61f8aab91a4514679a4eb57adfaaa9bb5b"},"dob":"1993-02-22 17:59:54","registered":"2012-07-25 21:13:43","phone":"08-185-405","cell":"040-570-11-23","id":{"name":"HETU","value":"293-0131"},"picture":{"large":"https://randomuser.me/api/portraits/men/30.jpg","medium":"https://randomuser.me/api/portraits/med/men/30.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/30.jpg"},"nat":"FI"},{"gender":"male","name":{"title":"mr","first":"josef","last":"jackson"},"location":{"street":"1309 boghall road","city":"skerries","state":"galway city","postcode":97900},"email":"josef.jackson@example.com","login":{"username":"goldenostrich488","password":"sparkle","salt":"7n8Vkz8p","md5":"047bd9fa861113fabd3cc486c1d7ee62","sha1":"6e5b2d08a08d3d603e98f06e9459e292239b8618","sha256":"22c10b8be8538864d9089ca342c848b0278424da46a1593caebc808df7beb664"},"dob":"1979-02-28 09:47:54","registered":"2005-08-26 21:32:11","phone":"061-898-5674","cell":"081-865-5288","id":{"name":"PPS","value":"4918254T"},"picture":{"large":"https://randomuser.me/api/portraits/men/46.jpg","medium":"https://randomuser.me/api/portraits/med/men/46.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/46.jpg"},"nat":"IE"},{"gender":"female","name":{"title":"miss","first":"alicia","last":"matthews"},"location":{"street":"5853 e sandy lake rd","city":"busselton","state":"australian capital territory","postcode":7839},"email":"alicia.matthews@example.com","login":{"username":"orangefish813","password":"sixty9","salt":"NY5tgIVB","md5":"8e3787ea4f4e1e1da93529f2ae839aa0","sha1":"114cb0ba43ab6628161c31b61eb30af2f75ef1bf","sha256":"aa4f0551074b4df2202907592098dadcd5a35cce9f7a4a2616e78186e534e4a5"},"dob":"1983-05-02 15:57:11","registered":"2010-02-21 04:26:00","phone":"05-4545-1542","cell":"0464-607-508","id":{"name":"TFN","value":"002732634"},"picture":{"large":"https://randomuser.me/api/portraits/women/45.jpg","medium":"https://randomuser.me/api/portraits/med/women/45.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/45.jpg"},"nat":"AU"},{"gender":"male","name":{"title":"mr","first":"rodney","last":"hopkins"},"location":{"street":"2172 novara avenue","city":"ennis","state":"clare","postcode":12795},"email":"rodney.hopkins@example.com","login":{"username":"organicgoose861","password":"girl","salt":"nQ66TTKu","md5":"3539bccd6aa19a431da013cf794d229e","sha1":"417f6164f32136dcf5d80ef43420399cfcec576f","sha256":"81bee6f0a21ea2b5c6acbddf1ea777cf1c111223e14f19eaf16b3c15f3191f09"},"dob":"1971-11-03 18:36:50","registered":"2007-02-21 16:26:10","phone":"011-629-1710","cell":"081-087-8163","id":{"name":"PPS","value":"5742195T"},"picture":{"large":"https://randomuser.me/api/portraits/men/98.jpg","medium":"https://randomuser.me/api/portraits/med/men/98.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/98.jpg"},"nat":"IE"},{"gender":"male","name":{"title":"mr","first":"arnaud","last":"harris"},"location":{"street":"4864 balmoral st","city":"borden","state":"nunavut","postcode":66722},"email":"arnaud.harris@example.com","login":{"username":"blackgoose740","password":"dragon1","salt":"P3NqDSbK","md5":"bcadee131d6f74221a5165b3abd05a33","sha1":"8dea108163fa122dc7bfb403b6888c599b8da0fc","sha256":"ec02e1fdcc07ee4dcb34e3255ab2fbeaf6a66da4f8b3f3a2594e6a5a452bf63a"},"dob":"1962-07-05 21:39:16","registered":"2006-03-06 16:00:43","phone":"023-886-9973","cell":"361-077-2402","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/20.jpg","medium":"https://randomuser.me/api/portraits/med/men/20.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/20.jpg"},"nat":"CA"},{"gender":"female","name":{"title":"madame","first":"lena","last":"martinez"},"location":{"street":"4054 rue bony","city":"froideville","state":"aargau","postcode":4969},"email":"lena.martinez@example.com","login":{"username":"smallpanda713","password":"thanks","salt":"QXRdfgzz","md5":"da0e961f2fa7e32fee58eaf987b16462","sha1":"7d57a878e650c48eae94b90e4ae021cb6574b257","sha256":"501e0de5b4cc2734279f1f90830debc5395d38ba656fd2a594c034005064a3b7"},"dob":"1956-08-20 19:20:43","registered":"2014-04-15 15:14:56","phone":"(826)-824-9581","cell":"(122)-545-9317","id":{"name":"AVS","value":"756.KSUB.XWLK.18"},"picture":{"large":"https://randomuser.me/api/portraits/women/55.jpg","medium":"https://randomuser.me/api/portraits/med/women/55.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/55.jpg"},"nat":"CH"},{"gender":"male","name":{"title":"mr","first":"ryan","last":"jones"},"location":{"street":"1124 balmoral st","city":"elgin","state":"newfoundland and labrador","postcode":50641},"email":"ryan.jones@example.com","login":{"username":"smallbear672","password":"charger","salt":"eiRoFuKN","md5":"4009224d52707f6702e387a62c2b1dd2","sha1":"4760dbae60bc6ca7a86538fb0df357e93edaffb7","sha256":"06c56afa38d9c8cd4c9ef1d57266a1a2d3d99ec0223a2a88d4f75508f737fb9a"},"dob":"1953-07-03 01:22:55","registered":"2010-10-31 09:12:04","phone":"509-223-9264","cell":"819-870-7269","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/90.jpg","medium":"https://randomuser.me/api/portraits/med/men/90.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/90.jpg"},"nat":"CA"},{"gender":"female","name":{"title":"miss","first":"afet","last":"tekand"},"location":{"street":"9136 vatan cd","city":"kırıkkale","state":"gaziantep","postcode":84981},"email":"afet.tekand@example.com","login":{"username":"tinylion127","password":"godfather","salt":"t44by7fe","md5":"86999583dc2e3b0f65997976e5eb1ced","sha1":"365bf1d76f22e76a6c81e104c7a3971f077ea61e","sha256":"783c0b0c786ac048ffca9f7c26a02277271ef6503a59ffab3abf6971a953055f"},"dob":"1948-10-22 08:24:34","registered":"2002-06-11 12:49:00","phone":"(252)-259-9328","cell":"(090)-584-5232","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/94.jpg","medium":"https://randomuser.me/api/portraits/med/women/94.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/94.jpg"},"nat":"TR"},{"gender":"male","name":{"title":"mr","first":"louis","last":"king"},"location":{"street":"7803 dickens street","city":"whanganui","state":"hawke's bay","postcode":71846},"email":"louis.king@example.com","login":{"username":"silvergoose653","password":"superstar","salt":"cvdtK5wl","md5":"953519388f09bb6920b9f1e0cec08a00","sha1":"10436f3dd690af18da1bbc0c4b05623de6346186","sha256":"701a837401f0e18d73084f50b8890e09e572a897799e07bacae646923eb2d8b9"},"dob":"1947-02-10 22:09:28","registered":"2003-06-21 14:49:28","phone":"(934)-375-9269","cell":"(614)-685-5175","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/47.jpg","medium":"https://randomuser.me/api/portraits/med/men/47.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/47.jpg"},"nat":"NZ"},{"gender":"male","name":{"title":"mr","first":"eli","last":"dean"},"location":{"street":"8421 park lane","city":"portsmouth","state":"northamptonshire","postcode":"V76 2UL"},"email":"eli.dean@example.com","login":{"username":"redgorilla496","password":"picturs","salt":"mzpzuhdf","md5":"d18cc297e0739c8726ca0c56e6229ee3","sha1":"1648c9b26a204dd5b80fd0f00237333fe69e2f86","sha256":"d03d768f30bafd26e1dd4e83376742302a6a8dc5d5a3724df5c26f62958d0110"},"dob":"1952-09-21 21:42:13","registered":"2011-03-02 14:57:36","phone":"015242 52174","cell":"0700-079-069","id":{"name":"NINO","value":"BK 26 60 37 D"},"picture":{"large":"https://randomuser.me/api/portraits/men/11.jpg","medium":"https://randomuser.me/api/portraits/med/men/11.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/11.jpg"},"nat":"GB"},{"gender":"female","name":{"title":"miss","first":"paige","last":"james"},"location":{"street":"6418 dame street","city":"portarlington","state":"waterford","postcode":11388},"email":"paige.james@example.com","login":{"username":"heavyladybug581","password":"landon","salt":"h2Omr94C","md5":"7630cd355f031ad86b0a3ea4f09756a6","sha1":"f311767cce53f3179dbd0d5a9b053c4cadeb5c14","sha256":"35d5ce8bd59e0bed067fb0fd4d8fca5ca26e07fef0cf9a4707c52cf9f7596f69"},"dob":"1945-05-25 00:54:36","registered":"2013-10-18 13:47:04","phone":"041-058-5391","cell":"081-193-2013","id":{"name":"PPS","value":"5418120T"},"picture":{"large":"https://randomuser.me/api/portraits/women/81.jpg","medium":"https://randomuser.me/api/portraits/med/women/81.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/81.jpg"},"nat":"IE"},{"gender":"male","name":{"title":"mr","first":"kent","last":"wade"},"location":{"street":"9048 adams st","city":"high point","state":"new jersey","postcode":28737},"email":"kent.wade@example.com","login":{"username":"organicmeercat110","password":"deacon","salt":"SMrCEmaW","md5":"f07e2d3c7e57471fb56940e951232475","sha1":"f7f1c4ab4cbc018c74ed7cc6e778fd9f6583624d","sha256":"4b59e10fc50663c3dc9ccaffa7a46e7165195244d72522df204c1747c702572b"},"dob":"1976-08-22 08:18:17","registered":"2012-05-25 09:49:30","phone":"(832)-981-6012","cell":"(190)-583-1860","id":{"name":"SSN","value":"345-82-7993"},"picture":{"large":"https://randomuser.me/api/portraits/men/92.jpg","medium":"https://randomuser.me/api/portraits/med/men/92.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/92.jpg"},"nat":"US"},{"gender":"male","name":{"title":"mr","first":"mille","last":"pedersen"},"location":{"street":"6482 jeppe aakjærs vej","city":"ryslinge","state":"midtjylland","postcode":10153},"email":"mille.pedersen@example.com","login":{"username":"bigbear289","password":"salem","salt":"KGAd5L7Y","md5":"dd81a607e4e1de80b933997844948253","sha1":"b54ed08a43ea325ac353cf1d21efae47cb5255bd","sha256":"ea8c68cae6de897e29ed62a67161736a9c17811559b43dcea416235ba23df6fb"},"dob":"1954-12-24 07:40:39","registered":"2002-10-09 23:22:51","phone":"67272898","cell":"90278665","id":{"name":"CPR","value":"191062-7288"},"picture":{"large":"https://randomuser.me/api/portraits/men/55.jpg","medium":"https://randomuser.me/api/portraits/med/men/55.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/55.jpg"},"nat":"DK"},{"gender":"male","name":{"title":"mr","first":"tijl","last":"uil"},"location":{"street":"7527 wijde begijnestraat","city":"hillegom","state":"drenthe","postcode":26966},"email":"tijl.uil@example.com","login":{"username":"ticklishwolf242","password":"march","salt":"vs2yMMZW","md5":"d2e986099f2c3f0f3be287ae6beb350d","sha1":"7cd6a7f16867b9f5e95b8e0a55463244c680ab15","sha256":"031b2a5b0e1208cef91fd1040082b26ccdc4a87d4b1ba98b47cefa9542e91470"},"dob":"1977-01-01 05:50:16","registered":"2015-07-31 12:09:52","phone":"(690)-568-2595","cell":"(188)-036-9621","id":{"name":"BSN","value":"19587095"},"picture":{"large":"https://randomuser.me/api/portraits/men/81.jpg","medium":"https://randomuser.me/api/portraits/med/men/81.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/81.jpg"},"nat":"NL"},{"gender":"female","name":{"title":"miss","first":"silje","last":"andersen"},"location":{"street":"4282 langgade","city":"lundby","state":"sjælland","postcode":46079},"email":"silje.andersen@example.com","login":{"username":"purplewolf802","password":"cold","salt":"PFDY7wc7","md5":"aab241b30fa9d4c4d4757ed5d6fcdbda","sha1":"162257dd4226224297c10db8aa279b3b2a234af8","sha256":"03596b5491a565ba4c22d12853eeae87b868bb28c9ed0c42827ffcc7f704ce79"},"dob":"1946-07-17 11:20:54","registered":"2013-12-24 08:29:21","phone":"76180624","cell":"92947829","id":{"name":"CPR","value":"596904-3103"},"picture":{"large":"https://randomuser.me/api/portraits/women/50.jpg","medium":"https://randomuser.me/api/portraits/med/women/50.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/50.jpg"},"nat":"DK"},{"gender":"male","name":{"title":"mr","first":"نيما","last":"کریمی"},"location":{"street":"6218 دیباجی","city":"اهواز","state":"خراسان جنوبی","postcode":96245},"email":"نيما.کریمی@example.com","login":{"username":"orangeelephant221","password":"callisto","salt":"Vv1EDbdy","md5":"9ff26188a5f87dfb2b9c024077390d69","sha1":"8ec05b5409b537f0334a9493acb56bd934b28ea8","sha256":"4e90384a393522c7ead6d2a4afd446f7d27867242ccba33ae81d8b608c965168"},"dob":"1973-09-13 12:09:40","registered":"2012-09-14 06:11:24","phone":"043-06219106","cell":"0964-418-6945","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/13.jpg","medium":"https://randomuser.me/api/portraits/med/men/13.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/13.jpg"},"nat":"IR"},{"gender":"male","name":{"title":"mr","first":"quévin","last":"novaes"},"location":{"street":"5543 rua são luiz ","city":"eunápolis","state":"rio grande do norte","postcode":52389},"email":"quévin.novaes@example.com","login":{"username":"smallbutterfly929","password":"johnny","salt":"IWf5eTsQ","md5":"8cd8a38d5b77d37678ee938b9c560cfa","sha1":"248def1d8de114efcaa18c96780496f71b94b33e","sha256":"778246e9f3b11a840e2103fa8c4a22289a966a7d182a36e8026ee61b91cae49f"},"dob":"1959-05-03 10:12:58","registered":"2002-07-31 03:39:09","phone":"(76) 3772-4853","cell":"(30) 5657-3583","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/53.jpg","medium":"https://randomuser.me/api/portraits/med/men/53.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/53.jpg"},"nat":"BR"},{"gender":"male","name":{"title":"mr","first":"vílmar","last":"de souza"},"location":{"street":"9543 rua dom pedro ii ","city":"arapiraca","state":"sergipe","postcode":15594},"email":"vílmar.desouza@example.com","login":{"username":"silvergorilla225","password":"bigboobs","salt":"O4HjK5uB","md5":"f82f869962c2227a4f8c0b25475a6adf","sha1":"5dfb831d86afedb7e844dd53f896493ea6e6ac75","sha256":"8066cf535fdae89f4a88929dfaeab1d5347a9470fb9baf6d37aefef7e3868626"},"dob":"1962-09-23 02:34:45","registered":"2006-07-24 07:49:20","phone":"(06) 8840-4188","cell":"(74) 5506-5129","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/11.jpg","medium":"https://randomuser.me/api/portraits/med/men/11.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/11.jpg"},"nat":"BR"}],"info":{"seed":"a79941f1b459a00a","results":125,"page":1,"version":"1.1"}} diff --git a/dev-resources/json10b.json b/dev-resources/json10b.json deleted file mode 100644 index 33ab937..0000000 --- a/dev-resources/json10b.json +++ /dev/null @@ -1 +0,0 @@ -{"imu":42} \ No newline at end of file diff --git a/dev-resources/json10k.json b/dev-resources/json10k.json deleted file mode 100644 index 9f50a41..0000000 --- a/dev-resources/json10k.json +++ /dev/null @@ -1 +0,0 @@ -{"results":[{"gender":"male","name":{"title":"mr","first":"علی رضا","last":"محمدخان"},"location":{"street":"4326 پارک دانشجو","city":"آبادان","state":"خوزستان","postcode":36902},"email":"علی رضا.محمدخان@example.com","login":{"username":"lazypeacock819","password":"taxman","salt":"peX2qakA","md5":"0c39ef1320ec7f799065f3b3385a2f4e","sha1":"cd51cda2b75943b111707094d8a5652542d2dff0","sha256":"a1f97d14b6a878b963482de8d6aa789f5baaf9872e510031028b213241787a73"},"dob":"1953-04-25 02:27:20","registered":"2004-10-03 21:41:05","phone":"050-46102037","cell":"0990-753-1209","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/24.jpg","medium":"https://randomuser.me/api/portraits/med/men/24.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/24.jpg"},"nat":"IR"},{"gender":"female","name":{"title":"ms","first":"andrea","last":"peña"},"location":{"street":"7112 calle de la almudena","city":"la palma","state":"islas baleares","postcode":63878},"email":"andrea.peña@example.com","login":{"username":"purpleleopard218","password":"harvard","salt":"hc9Uu10H","md5":"0d1c50b840053c61f68eb11b9ff5c44b","sha1":"5bd624f5e4567f6340cb00a07d6d9cdb2046b219","sha256":"839fee4ad0d19068b4dab72546bed62fe48ae69456e4b1b383125484510950b7"},"dob":"1953-01-27 09:21:17","registered":"2005-07-01 21:44:40","phone":"986-752-877","cell":"623-685-112","id":{"name":"DNI","value":"93357290-Y"},"picture":{"large":"https://randomuser.me/api/portraits/women/81.jpg","medium":"https://randomuser.me/api/portraits/med/women/81.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/81.jpg"},"nat":"ES"},{"gender":"female","name":{"title":"miss","first":"sue","last":"romero"},"location":{"street":"247 white oak dr","city":"mackay","state":"new south wales","postcode":1327},"email":"sue.romero@example.com","login":{"username":"orangefish402","password":"llll","salt":"AjO4nICn","md5":"19521ff63dc4e49e85c5a80ed219231c","sha1":"dde550b31afc7ff7d852e4b3252e1fa5070e00e3","sha256":"d7b83280c4eb3b095295af9b7ef51b306fc3c7df3843c26bfec320da42bbf16f"},"dob":"1952-01-13 15:26:37","registered":"2014-04-04 13:07:34","phone":"01-5269-1704","cell":"0492-962-203","id":{"name":"TFN","value":"599157736"},"picture":{"large":"https://randomuser.me/api/portraits/women/13.jpg","medium":"https://randomuser.me/api/portraits/med/women/13.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/13.jpg"},"nat":"AU"},{"gender":"female","name":{"title":"mrs","first":"donna","last":"murphy"},"location":{"street":"8988 north road","city":"greystones","state":"kilkenny","postcode":53668},"email":"donna.murphy@example.com","login":{"username":"silverkoala656","password":"33333333","salt":"wWUk5zn2","md5":"9172751676aa17561fdd3174dd4c9326","sha1":"5c073d90d70e6e72c70e8c08dde95734cdad840e","sha256":"6fe569f123ad796a7ff0649f542a2333ccacd92bd70ca6d52d64cd317cdd0a33"},"dob":"1969-09-12 21:14:56","registered":"2012-06-10 23:04:02","phone":"061-625-5539","cell":"081-759-2651","id":{"name":"PPS","value":"7736182T"},"picture":{"large":"https://randomuser.me/api/portraits/women/68.jpg","medium":"https://randomuser.me/api/portraits/med/women/68.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/68.jpg"},"nat":"IE"},{"gender":"female","name":{"title":"mademoiselle","first":"marion","last":"faure"},"location":{"street":"4623 rue de l'abbé-roger-derry","city":"gollion","state":"bern","postcode":1333},"email":"marion.faure@example.com","login":{"username":"yellowbear160","password":"747474","salt":"ZIx9zcNs","md5":"15969c42e7eaf5f2ce0492b86a165393","sha1":"7c578c86f87b28a0f396a0f14d1ce3a870b31d16","sha256":"fe1bc95f4fdbb789c80d5912c576074e03fa3ab509a6de3e6fe9ad256d67233d"},"dob":"1946-02-10 21:20:20","registered":"2005-03-07 01:57:56","phone":"(805)-136-2619","cell":"(066)-198-2825","id":{"name":"AVS","value":"756.TAAE.FXMI.39"},"picture":{"large":"https://randomuser.me/api/portraits/women/20.jpg","medium":"https://randomuser.me/api/portraits/med/women/20.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/20.jpg"},"nat":"CH"},{"gender":"female","name":{"title":"ms","first":"carmen","last":"ellis"},"location":{"street":"90 bruce st","city":"hobart","state":"south australia","postcode":7153},"email":"carmen.ellis@example.com","login":{"username":"smallrabbit833","password":"berkeley","salt":"wWW0PXS7","md5":"16cdf0978f51bcede9fe63fbf52c7744","sha1":"99bf5b7219f65c2f19a6e1b7bfe9642a8c6465a4","sha256":"d96f60965aedf1f82f2b59b1789e32230bd26495a1b7257df8efc1e92bcf537d"},"dob":"1960-12-15 09:15:17","registered":"2007-06-30 17:58:06","phone":"02-5809-6469","cell":"0428-863-957","id":{"name":"TFN","value":"346283503"},"picture":{"large":"https://randomuser.me/api/portraits/women/85.jpg","medium":"https://randomuser.me/api/portraits/med/women/85.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/85.jpg"},"nat":"AU"},{"gender":"female","name":{"title":"miss","first":"emma","last":"gregory"},"location":{"street":"8541 mill road","city":"birmingham","state":"berkshire","postcode":"T3E 2XL"},"email":"emma.gregory@example.com","login":{"username":"goldenrabbit210","password":"cameron1","salt":"UvELNRRe","md5":"0db2f9fd269b3c43d3b906f46ebf5d78","sha1":"4881220c87d85434553f31be9d79893a1f8e35fa","sha256":"a6349fffe4c01b245d2d7107059dac008711174fd88201c908736dedc3b6448e"},"dob":"1947-05-04 06:23:14","registered":"2015-03-16 01:40:15","phone":"016977 97466","cell":"0795-686-594","id":{"name":"NINO","value":"PL 94 41 63 V"},"picture":{"large":"https://randomuser.me/api/portraits/women/82.jpg","medium":"https://randomuser.me/api/portraits/med/women/82.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/82.jpg"},"nat":"GB"},{"gender":"female","name":{"title":"miss","first":"debbie","last":"gilbert"},"location":{"street":"7338 grange road","city":"letterkenny","state":"tipperary","postcode":52466},"email":"debbie.gilbert@example.com","login":{"username":"heavygoose267","password":"coventry","salt":"NS7ZrqkE","md5":"775729a0cf119f1c32fdab5bf93e1927","sha1":"15052613cdce515dc8e1fccaa0c9f9a584e48faa","sha256":"4cb3c00151faf26ed85e9ba61f22376973e755f5219633b0247a69e7ef22bc01"},"dob":"1987-02-05 19:15:58","registered":"2005-10-14 13:25:45","phone":"031-061-6514","cell":"081-331-8027","id":{"name":"PPS","value":"9152780T"},"picture":{"large":"https://randomuser.me/api/portraits/women/69.jpg","medium":"https://randomuser.me/api/portraits/med/women/69.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/69.jpg"},"nat":"IE"},{"gender":"female","name":{"title":"ms","first":"charlene","last":"miller"},"location":{"street":"2718 oak lawn ave","city":"chesapeake","state":"rhode island","postcode":16733},"email":"charlene.miller@example.com","login":{"username":"bluetiger146","password":"older","salt":"tCyeeeyO","md5":"d567deed2bd685e872c7672844d416cc","sha1":"35dd6ce7ab488a5b1a4eed2d136860c8a0e1d5dd","sha256":"c5eb257b13d5bef4ba16cd7fd7189c1c7d0e09967a44d80ebc14e12e9aa73d10"},"dob":"1982-02-22 18:45:05","registered":"2010-06-04 18:47:51","phone":"(048)-109-3917","cell":"(867)-929-6436","id":{"name":"SSN","value":"172-89-2931"},"picture":{"large":"https://randomuser.me/api/portraits/women/93.jpg","medium":"https://randomuser.me/api/portraits/med/women/93.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/93.jpg"},"nat":"US"},{"gender":"male","name":{"title":"mr","first":"آرمین","last":"نكو نظر"},"location":{"street":"5745 میرزای شیرازی","city":"ساری","state":"سمنان","postcode":68243},"email":"آرمین.نكونظر@example.com","login":{"username":"heavymouse181","password":"daewoo","salt":"lAREYXd7","md5":"0cfffb14d991d31eeb27dc04734c2595","sha1":"65a84f96764d5abf58ffcc0df42ec8632a51cb05","sha256":"adad007af1894f671f58d841321a8db8ca4cd44073c3d1d1f443bf737b49da94"},"dob":"1981-12-12 14:53:24","registered":"2007-04-02 21:59:32","phone":"089-20174880","cell":"0999-186-4226","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/men/90.jpg","medium":"https://randomuser.me/api/portraits/med/men/90.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/90.jpg"},"nat":"IR"},{"gender":"female","name":{"title":"miss","first":"sheila","last":"dean"},"location":{"street":"8647 robinson rd","city":"grants pass","state":"nevada","postcode":48562},"email":"sheila.dean@example.com","login":{"username":"smallelephant691","password":"qian","salt":"M7a9TwKA","md5":"0814e040674d1081eb2f690a1b0d4ef3","sha1":"47dbb30166d7af1c35eb5ad45106bd328b5f095e","sha256":"5c687ab2e9a13108c280467f4ef20c092a49d9b5be722c586e9a40db708e1bf9"},"dob":"1991-07-13 13:12:06","registered":"2008-11-27 02:19:50","phone":"(877)-584-7016","cell":"(981)-462-9845","id":{"name":"SSN","value":"295-99-5901"},"picture":{"large":"https://randomuser.me/api/portraits/women/24.jpg","medium":"https://randomuser.me/api/portraits/med/women/24.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/24.jpg"},"nat":"US"},{"gender":"female","name":{"title":"miss","first":"olivia","last":"hein"},"location":{"street":"9022 mühlenweg","city":"holzminden","state":"thüringen","postcode":65296},"email":"olivia.hein@example.com","login":{"username":"orangeleopard758","password":"excite","salt":"QdkX2c25","md5":"68052177fb719d2e57a52da40318e2fe","sha1":"cb00df46d06887e0732b3ff94bba37ed33413a64","sha256":"89147b5a4ee19723cc367fc2b7f0a4a482ce692076111bd48212b88a6d74873a"},"dob":"1988-05-02 15:15:45","registered":"2010-01-24 00:08:23","phone":"0601-9202186","cell":"0179-7462091","id":{"name":"","value":null},"picture":{"large":"https://randomuser.me/api/portraits/women/26.jpg","medium":"https://randomuser.me/api/portraits/med/women/26.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/women/26.jpg"},"nat":"DE"},{"gender":"male","name":{"title":"mr","first":"mathias","last":"johansen"},"location":{"street":"2875 gyvelvej","city":"askeby","state":"midtjylland","postcode":88770},"email":"mathias.johansen@example.com","login":{"username":"bigmeercat405","password":"hughes","salt":"tRVWblrQ","md5":"69220f7f2fda0a922024babf5c71f548","sha1":"64264d1f3703fdb529e4d7e2a2ce4c7bfe5e4ea6","sha256":"ad73321a24ddf3c9cc9b23e056c97e50b006cfde75c8a1f1fbb3d06e5ab04b82"},"dob":"1957-04-07 17:58:27","registered":"2003-05-10 09:57:39","phone":"13309317","cell":"70639222","id":{"name":"CPR","value":"197517-4938"},"picture":{"large":"https://randomuser.me/api/portraits/men/35.jpg","medium":"https://randomuser.me/api/portraits/med/men/35.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/35.jpg"},"nat":"DK"}],"info":{"seed":"b13cc7728ab0cf73","results":13,"page":1,"version":"1.1"}} diff --git a/dev-resources/json1k.json b/dev-resources/json1k.json deleted file mode 100644 index 04389e6..0000000 --- a/dev-resources/json1k.json +++ /dev/null @@ -1 +0,0 @@ -{"results":[{"gender":"male","name":{"title":"mr","first":"morris","last":"lambert"},"location":{"street":"7239 hillcrest rd","city":"nowra","state":"australian capital territory","postcode":7541},"email":"morris.lambert@example.com","login":{"username":"smallbird414","password":"carole","salt":"yO9OBSsk","md5":"658323a603522238fb32a86b82eafd55","sha1":"289f6e9a8ccd42b539e0c43283e788aeb8cd0f6e","sha256":"57bca99b2b4e78aa2171eda4db3f35e7631ca3b30f157bdc7ea089a855c66668"},"dob":"1950-07-13 09:18:34","registered":"2012-04-07 00:05:32","phone":"08-2274-7839","cell":"0452-558-702","id":{"name":"TFN","value":"740213762"},"picture":{"large":"https://randomuser.me/api/portraits/men/95.jpg","medium":"https://randomuser.me/api/portraits/med/men/95.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/95.jpg"},"nat":"AU"}],"info":{"seed":"fb0c2b3c7cedc7af","results":1,"page":1,"version":"1.1"}} diff --git a/dev-resources/nested-arrays.json b/dev-resources/nested-arrays.json deleted file mode 100644 index fb8cc49..0000000 --- a/dev-resources/nested-arrays.json +++ /dev/null @@ -1 +0,0 @@ -["a", ["b", "c", "d", "e", "f"], [[], "a"], [["a", ["b", "c", "d", "e", "f"]], "a"], ["b", "c", "d", "e", "f"], ["a", ["a", [[], "a"]]], ["a", [["b", "c", "d", "e", "f"], "a"]], ["b", "c", "d", "e", "f"], ["b", "c", "d", "e", "f"], [], ["b", "c", "d", "e", "f"], ["a", []], ["b", "c", "d", "e", "f"], [], [[[["a", [[[["a", ["b", "c", "d", "e", "f"]], "a"], "a"], "a"]], "a"], "a"], "a"], [], [[["a", ["a", [["a", ["a", [[["a", ["b", "c", "d", "e", "f"]], "a"], "a"]]], "a"]]], "a"], "a"], [["a", [[["a", [[], "a"]], "a"], "a"]], "a"], ["a", []], ["b", "c", "d", "e", "f"], ["a", [[[[["b", "c", "d", "e", "f"], "a"], "a"], "a"], "a"]], ["a", []], [], [[], "a"], [[["b", "c", "d", "e", "f"], "a"], "a"], ["a", ["a", ["b", "c", "d", "e", "f"]]], ["a", [["a", ["a", ["b", "c", "d", "e", "f"]]], "a"]], ["a", ["a", ["a", [[[], "a"], "a"]]]], ["a", [[], "a"]], ["b", "c", "d", "e", "f"], ["b", "c", "d", "e", "f"], [["a", []], "a"], [["a", ["a", ["b", "c", "d", "e", "f"]]], "a"], ["a", [["a", ["a", [["b", "c", "d", "e", "f"], "a"]]], "a"]], ["a", ["b", "c", "d", "e", "f"]], ["a", [[[["b", "c", "d", "e", "f"], "a"], "a"], "a"]], [["a", []], "a"], ["a", []], [], [], ["a", [["a", ["a", ["a", ["a", []]]]], "a"]], [["a", ["b", "c", "d", "e", "f"]], "a"], ["a", ["b", "c", "d", "e", "f"]], ["a", [[], "a"]], ["a", ["a", ["a", [[[[], "a"], "a"], "a"]]]], ["b", "c", "d", "e", "f"], [[["b", "c", "d", "e", "f"], "a"], "a"], [["a", ["b", "c", "d", "e", "f"]], "a"], [], ["b", "c", "d", "e", "f"], ["b", "c", "d", "e", "f"], [["b", "c", "d", "e", "f"], "a"], [["a", ["b", "c", "d", "e", "f"]], "a"], [["a", ["a", ["a", [[[[], "a"], "a"], "a"]]]], "a"], ["a", ["a", ["a", ["a", []]]]], [], [[[], "a"], "a"], ["b", "c", "d", "e", "f"], ["a", [["a", [[], "a"]], "a"]], [["a", []], "a"], [[[["b", "c", "d", "e", "f"], "a"], "a"], "a"], ["a", []], [[["a", [[["a", ["b", "c", "d", "e", "f"]], "a"], "a"]], "a"], "a"], [], ["a", [["a", [["a", ["a", [[[], "a"], "a"]]], "a"]], "a"]], [], ["a", ["a", ["a", ["a", ["a", []]]]]], [[[["b", "c", "d", "e", "f"], "a"], "a"], "a"], [["a", ["a", [[], "a"]]], "a"], [], ["a", ["a", []]], ["b", "c", "d", "e", "f"], ["a", ["a", [[[["a", [["b", "c", "d", "e", "f"], "a"]], "a"], "a"], "a"]]], ["a", ["a", [[], "a"]]], [], ["b", "c", "d", "e", "f"], ["a", [[], "a"]], ["a", [[], "a"]], [[[[["a", []], "a"], "a"], "a"], "a"], [[[[[[], "a"], "a"], "a"], "a"], "a"], ["a", []], ["a", ["b", "c", "d", "e", "f"]], ["a", []], ["a", []], ["a", []], [], ["a", []], ["a", ["a", []]], [["a", ["b", "c", "d", "e", "f"]], "a"], [[["a", [[["a", ["b", "c", "d", "e", "f"]], "a"], "a"]], "a"], "a"], [["a", ["a", ["a", [[], "a"]]]], "a"], ["a", ["b", "c", "d", "e", "f"]], [["b", "c", "d", "e", "f"], "a"], [["a", ["a", ["b", "c", "d", "e", "f"]]], "a"], [], ["b", "c", "d", "e", "f"], ["b", "c", "d", "e", "f"], ["a", ["b", "c", "d", "e", "f"]], [["a", ["a", [[["b", "c", "d", "e", "f"], "a"], "a"]]], "a"], ["a", [[[], "a"], "a"]], [], [], [["a", ["a", [["a", [[[["a", []], "a"], "a"], "a"]], "a"]]], "a"], [["b", "c", "d", "e", "f"], "a"], ["a", ["a", [["b", "c", "d", "e", "f"], "a"]]], ["b", "c", "d", "e", "f"], ["a", ["b", "c", "d", "e", "f"]], ["a", []], ["b", "c", "d", "e", "f"], [], ["a", ["a", ["a", [[[["a", ["a", ["a", ["a", ["a", ["a", ["a", [["a", [[[[], "a"], "a"], "a"]], "a"]]]]]]]], "a"], "a"], "a"]]]], [[[], "a"], "a"], [], ["b", "c", "d", "e", "f"], [[["a", [["b", "c", "d", "e", "f"], "a"]], "a"], "a"], [], ["b", "c", "d", "e", "f"], ["a", ["a", ["a", [[[[[[], "a"], "a"], "a"], "a"], "a"]]]], [["a", [[["b", "c", "d", "e", "f"], "a"], "a"]], "a"], [[[[[["a", ["a", ["b", "c", "d", "e", "f"]]], "a"], "a"], "a"], "a"], "a"], ["a", [["b", "c", "d", "e", "f"], "a"]], ["a", ["a", ["a", [["a", [["a", [[], "a"]], "a"]], "a"]]]], [[], "a"], [["a", [[["a", [["a", [[["a", ["b", "c", "d", "e", "f"]], "a"], "a"]], "a"]], "a"], "a"]], "a"], ["a", [["b", "c", "d", "e", "f"], "a"]], ["b", "c", "d", "e", "f"], ["b", "c", "d", "e", "f"], [[], "a"], [[[[[["a", [["b", "c", "d", "e", "f"], "a"]], "a"], "a"], "a"], "a"], "a"], ["a", ["a", ["b", "c", "d", "e", "f"]]], [["a", [[], "a"]], "a"], [], ["a", [["a", []], "a"]], [[["b", "c", "d", "e", "f"], "a"], "a"], [], [[[], "a"], "a"], [[["a", ["a", ["a", ["a", ["a", ["a", ["a", ["b", "c", "d", "e", "f"]]]]]]]], "a"], "a"], ["a", [[], "a"]], [[[["a", ["a", []]], "a"], "a"], "a"], ["a", [[["a", [["a", ["a", []]], "a"]], "a"], "a"]], ["a", [[], "a"]], ["a", []], ["a", ["b", "c", "d", "e", "f"]], [], [["a", []], "a"], ["a", [["a", ["b", "c", "d", "e", "f"]], "a"]], ["b", "c", "d", "e", "f"], ["a", [["b", "c", "d", "e", "f"], "a"]], ["a", ["a", []]], [], [[["a", [[[], "a"], "a"]], "a"], "a"], ["b", "c", "d", "e", "f"], [], [], ["b", "c", "d", "e", "f"], ["a", []], [["a", [["a", ["b", "c", "d", "e", "f"]], "a"]], "a"], ["b", "c", "d", "e", "f"], ["a", ["a", ["b", "c", "d", "e", "f"]]], ["b", "c", "d", "e", "f"], ["a", ["a", ["a", [[["a", [[[["b", "c", "d", "e", "f"], "a"], "a"], "a"]], "a"], "a"]]]], ["a", ["b", "c", "d", "e", "f"]], ["a", ["b", "c", "d", "e", "f"]], [[["a", [["b", "c", "d", "e", "f"], "a"]], "a"], "a"], [["a", [["b", "c", "d", "e", "f"], "a"]], "a"], [["a", [["b", "c", "d", "e", "f"], "a"]], "a"], ["a", [["a", [["a", [[], "a"]], "a"]], "a"]], [[["b", "c", "d", "e", "f"], "a"], "a"], [[[[], "a"], "a"], "a"], [[["b", "c", "d", "e", "f"], "a"], "a"], ["a", ["b", "c", "d", "e", "f"]], ["b", "c", "d", "e", "f"], [[[[["a", ["b", "c", "d", "e", "f"]], "a"], "a"], "a"], "a"], [[[], "a"], "a"], [["a", []], "a"], [], ["b", "c", "d", "e", "f"], ["b", "c", "d", "e", "f"], ["b", "c", "d", "e", "f"], [["a", [[[[], "a"], "a"], "a"]], "a"], ["b", "c", "d", "e", "f"], ["a", [["b", "c", "d", "e", "f"], "a"]], [[[], "a"], "a"], [["a", ["b", "c", "d", "e", "f"]], "a"], [[["b", "c", "d", "e", "f"], "a"], "a"], ["b", "c", "d", "e", "f"], [], [[], "a"], ["a", ["a", ["a", ["a", ["a", ["a", []]]]]]], ["a", ["a", ["b", "c", "d", "e", "f"]]], [[["a", [["a", ["a", [["a", ["a", [["b", "c", "d", "e", "f"], "a"]]], "a"]]], "a"]], "a"], "a"], [[["a", [[], "a"]], "a"], "a"], ["a", [["a", ["a", ["a", [[["b", "c", "d", "e", "f"], "a"], "a"]]]], "a"]], ["a", [["a", [[], "a"]], "a"]], ["a", ["b", "c", "d", "e", "f"]], ["a", []], [], [[[[["a", []], "a"], "a"], "a"], "a"], ["b", "c", "d", "e", "f"], ["a", []], ["a", ["a", ["a", ["b", "c", "d", "e", "f"]]]]] diff --git a/epl-v10.html b/epl-v10.html deleted file mode 100644 index 813c07d..0000000 --- a/epl-v10.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -Eclipse Public License - Version 1.0 - - - - - - -

Eclipse Public License - v 1.0

- -

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE -PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR -DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS -AGREEMENT.

- -

1. DEFINITIONS

- -

"Contribution" means:

- -

a) in the case of the initial Contributor, the initial -code and documentation distributed under this Agreement, and

-

b) in the case of each subsequent Contributor:

-

i) changes to the Program, and

-

ii) additions to the Program;

-

where such changes and/or additions to the Program -originate from and are distributed by that particular Contributor. A -Contribution 'originates' from a Contributor if it was added to the -Program by such Contributor itself or anyone acting on such -Contributor's behalf. Contributions do not include additions to the -Program which: (i) are separate modules of software distributed in -conjunction with the Program under their own license agreement, and (ii) -are not derivative works of the Program.

- -

"Contributor" means any person or entity that distributes -the Program.

- -

"Licensed Patents" mean patent claims licensable by a -Contributor which are necessarily infringed by the use or sale of its -Contribution alone or when combined with the Program.

- -

"Program" means the Contributions distributed in accordance -with this Agreement.

- -

"Recipient" means anyone who receives the Program under -this Agreement, including all Contributors.

- -

2. GRANT OF RIGHTS

- -

a) Subject to the terms of this Agreement, each -Contributor hereby grants Recipient a non-exclusive, worldwide, -royalty-free copyright license to reproduce, prepare derivative works -of, publicly display, publicly perform, distribute and sublicense the -Contribution of such Contributor, if any, and such derivative works, in -source code and object code form.

- -

b) Subject to the terms of this Agreement, each -Contributor hereby grants Recipient a non-exclusive, worldwide, -royalty-free patent license under Licensed Patents to make, use, sell, -offer to sell, import and otherwise transfer the Contribution of such -Contributor, if any, in source code and object code form. This patent -license shall apply to the combination of the Contribution and the -Program if, at the time the Contribution is added by the Contributor, -such addition of the Contribution causes such combination to be covered -by the Licensed Patents. The patent license shall not apply to any other -combinations which include the Contribution. No hardware per se is -licensed hereunder.

- -

c) Recipient understands that although each Contributor -grants the licenses to its Contributions set forth herein, no assurances -are provided by any Contributor that the Program does not infringe the -patent or other intellectual property rights of any other entity. Each -Contributor disclaims any liability to Recipient for claims brought by -any other entity based on infringement of intellectual property rights -or otherwise. As a condition to exercising the rights and licenses -granted hereunder, each Recipient hereby assumes sole responsibility to -secure any other intellectual property rights needed, if any. For -example, if a third party patent license is required to allow Recipient -to distribute the Program, it is Recipient's responsibility to acquire -that license before distributing the Program.

- -

d) Each Contributor represents that to its knowledge it -has sufficient copyright rights in its Contribution, if any, to grant -the copyright license set forth in this Agreement.

- -

3. REQUIREMENTS

- -

A Contributor may choose to distribute the Program in object code -form under its own license agreement, provided that:

- -

a) it complies with the terms and conditions of this -Agreement; and

- -

b) its license agreement:

- -

i) effectively disclaims on behalf of all Contributors -all warranties and conditions, express and implied, including warranties -or conditions of title and non-infringement, and implied warranties or -conditions of merchantability and fitness for a particular purpose;

- -

ii) effectively excludes on behalf of all Contributors -all liability for damages, including direct, indirect, special, -incidental and consequential damages, such as lost profits;

- -

iii) states that any provisions which differ from this -Agreement are offered by that Contributor alone and not by any other -party; and

- -

iv) states that source code for the Program is available -from such Contributor, and informs licensees how to obtain it in a -reasonable manner on or through a medium customarily used for software -exchange.

- -

When the Program is made available in source code form:

- -

a) it must be made available under this Agreement; and

- -

b) a copy of this Agreement must be included with each -copy of the Program.

- -

Contributors may not remove or alter any copyright notices contained -within the Program.

- -

Each Contributor must identify itself as the originator of its -Contribution, if any, in a manner that reasonably allows subsequent -Recipients to identify the originator of the Contribution.

- -

4. COMMERCIAL DISTRIBUTION

- -

Commercial distributors of software may accept certain -responsibilities with respect to end users, business partners and the -like. While this license is intended to facilitate the commercial use of -the Program, the Contributor who includes the Program in a commercial -product offering should do so in a manner which does not create -potential liability for other Contributors. Therefore, if a Contributor -includes the Program in a commercial product offering, such Contributor -("Commercial Contributor") hereby agrees to defend and -indemnify every other Contributor ("Indemnified Contributor") -against any losses, damages and costs (collectively "Losses") -arising from claims, lawsuits and other legal actions brought by a third -party against the Indemnified Contributor to the extent caused by the -acts or omissions of such Commercial Contributor in connection with its -distribution of the Program in a commercial product offering. The -obligations in this section do not apply to any claims or Losses -relating to any actual or alleged intellectual property infringement. In -order to qualify, an Indemnified Contributor must: a) promptly notify -the Commercial Contributor in writing of such claim, and b) allow the -Commercial Contributor to control, and cooperate with the Commercial -Contributor in, the defense and any related settlement negotiations. The -Indemnified Contributor may participate in any such claim at its own -expense.

- -

For example, a Contributor might include the Program in a commercial -product offering, Product X. That Contributor is then a Commercial -Contributor. If that Commercial Contributor then makes performance -claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility -alone. Under this section, the Commercial Contributor would have to -defend claims against the other Contributors related to those -performance claims and warranties, and if a court requires any other -Contributor to pay any damages as a result, the Commercial Contributor -must pay those damages.

- -

5. NO WARRANTY

- -

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS -PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS -OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, -ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY -OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely -responsible for determining the appropriateness of using and -distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to -the risks and costs of program errors, compliance with applicable laws, -damage to or loss of data, programs or equipment, and unavailability or -interruption of operations.

- -

6. DISCLAIMER OF LIABILITY

- -

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT -NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING -WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR -DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED -HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

- -

7. GENERAL

- -

If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of -the remainder of the terms of this Agreement, and without further action -by the parties hereto, such provision shall be reformed to the minimum -extent necessary to make such provision valid and enforceable.

- -

If Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the -Program itself (excluding combinations of the Program with other -software or hardware) infringes such Recipient's patent(s), then such -Recipient's rights granted under Section 2(b) shall terminate as of the -date such litigation is filed.

- -

All Recipient's rights under this Agreement shall terminate if it -fails to comply with any of the material terms or conditions of this -Agreement and does not cure such failure in a reasonable period of time -after becoming aware of such noncompliance. If all Recipient's rights -under this Agreement terminate, Recipient agrees to cease use and -distribution of the Program as soon as reasonably practicable. However, -Recipient's obligations under this Agreement and any licenses granted by -Recipient relating to the Program shall continue and survive.

- -

Everyone is permitted to copy and distribute copies of this -Agreement, but in order to avoid inconsistency the Agreement is -copyrighted and may only be modified in the following manner. The -Agreement Steward reserves the right to publish new versions (including -revisions) of this Agreement from time to time. No one other than the -Agreement Steward has the right to modify this Agreement. The Eclipse -Foundation is the initial Agreement Steward. The Eclipse Foundation may -assign the responsibility to serve as the Agreement Steward to a -suitable separate entity. Each new version of the Agreement will be -given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version -of the Agreement is published, Contributor may elect to distribute the -Program (including its Contributions) under the new version. Except as -expressly stated in Sections 2(a) and 2(b) above, Recipient receives no -rights or licenses to the intellectual property of any Contributor under -this Agreement, whether expressly, by implication, estoppel or -otherwise. All rights in the Program not expressly granted under this -Agreement are reserved.

- -

This Agreement is governed by the laws of the State of New York and -the intellectual property laws of the United States of America. No party -to this Agreement will bring a legal action under this Agreement more -than one year after the cause of action arose. Each party waives its -rights to a jury trial in any resulting litigation.

- - - - diff --git a/index-2.2.1-SNAPSHOT.clj b/index-2.2.1-SNAPSHOT.clj new file mode 100644 index 0000000..ecec70e --- /dev/null +++ b/index-2.2.1-SNAPSHOT.clj @@ -0,0 +1,175 @@ +{:namespaces + ({:doc + "JavaScript Object Notation (JSON) parser/generator.\nSee http://www.json.org/", + :author "Stuart Sierra", + :name "clojure.data.json", + :wiki-url "https://clojure.github.io/data.json/index.html", + :source-url + "https://github.com/clojure/data.json/blob/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj"}), + :vars + ({:raw-source-url + "https://github.com/clojure/data.json/raw/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj", + :name "json-str", + :file "src/main/clojure/clojure/data/json_compat_0_1.clj", + :source-url + "https://github.com/clojure/data.json/blob/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj#L42", + :line 42, + :var-type "function", + :arglists ([x & options]), + :doc + "DEPRECATED; replaced by 'write-str'.\n\nConverts x to a JSON-formatted string.\n\nValid options are:\n :escape-unicode false\n to turn of \\uXXXX escapes of Unicode characters.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/json-str"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj", + :name "pprint", + :file "src/main/clojure/clojure/data/json.clj", + :source-url + "https://github.com/clojure/data.json/blob/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj#L597", + :line 597, + :var-type "function", + :arglists ([x & {:as options}]), + :doc + "Pretty-prints JSON representation of x to *out*. Options are the\nsame as for write except :value-fn, which is not supported.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/pprint"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj", + :name "pprint-json", + :file "src/main/clojure/clojure/data/json_compat_0_1.clj", + :source-url + "https://github.com/clojure/data.json/blob/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj#L64", + :line 64, + :var-type "function", + :arglists ([x & options]), + :doc + "DEPRECATED; replaced by 'pprint'.\n\nPretty-prints JSON representation of x to *out*.\n\nValid options are:\n :escape-unicode false\n to turn off \\uXXXX escapes of Unicode characters.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/pprint-json"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj", + :name "print-json", + :file "src/main/clojure/clojure/data/json_compat_0_1.clj", + :source-url + "https://github.com/clojure/data.json/blob/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj#L53", + :line 53, + :var-type "function", + :arglists ([x & options]), + :doc + "DEPRECATED; replaced by 'write' to *out*.\n\nWrite JSON-formatted output to *out*.\n\nValid options are:\n :escape-unicode false\n to turn off \\uXXXX escapes of Unicode characters.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/print-json"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj", + :name "read", + :file "src/main/clojure/clojure/data/json.clj", + :source-url + "https://github.com/clojure/data.json/blob/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj#L255", + :line 255, + :var-type "function", + :arglists ([reader & {:as options}]), + :doc + "Reads a single item of JSON data from a java.io.Reader. Options are\nkey-value pairs, valid options are:\n\n :eof-error? boolean\n\n If true (default) will throw exception if the stream is empty.\n\n :eof-value Object\n\n Object to return if the stream is empty and eof-error? is\n false. Default is nil.\n\n :bigdec boolean\n\n If true use BigDecimal for decimal numbers instead of Double.\n Default is false.\n\n :key-fn function\n\n Single-argument function called on JSON property names; return\n value will replace the property names in the output. Default\n is clojure.core/identity, use clojure.core/keyword to get\n keyword properties.\n\n :value-fn function\n\n Function to transform values in maps (\"objects\" in JSON) in\n the output. For each JSON property, value-fn is called with\n two arguments: the property name (transformed by key-fn) and\n the value. The return value of value-fn will replace the value\n in the output. If value-fn returns itself, the property will\n be omitted from the output. The default value-fn returns the\n value unchanged. This option does not apply to non-map\n collections.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/read"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj", + :name "read-json", + :file "src/main/clojure/clojure/data/json_compat_0_1.clj", + :source-url + "https://github.com/clojure/data.json/blob/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj#L10", + :line 10, + :var-type "function", + :arglists + ([input] + [input keywordize?] + [input keywordize? eof-error? eof-value]), + :doc + "DEPRECATED; replaced by read-str.\n\nReads one JSON value from input String or Reader. If keywordize? is\ntrue (default), object keys will be converted to keywords. If\neof-error? is true (default), empty input will throw an\nEOFException; if false EOF will return eof-value.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/read-json"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj", + :name "read-str", + :file "src/main/clojure/clojure/data/json.clj", + :source-url + "https://github.com/clojure/data.json/blob/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj#L297", + :line 297, + :var-type "function", + :arglists ([string & {:as options}]), + :doc + "Reads one JSON value from input String. Options are the same as for\nread.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/read-str"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj", + :name "write", + :file "src/main/clojure/clojure/data/json.clj", + :source-url + "https://github.com/clojure/data.json/blob/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj#L507", + :line 507, + :var-type "function", + :arglists ([x writer & {:as options}]), + :doc + "Write JSON-formatted output to a java.io.Writer. Options are\nkey-value pairs, valid options are:\n\n :escape-unicode boolean\n\n If true (default) non-ASCII characters are escaped as \\uXXXX\n\n :escape-js-separators boolean\n\n If true (default) the Unicode characters U+2028 and U+2029 will\n be escaped as \\u2028 and \\u2029 even if :escape-unicode is\n false. (These two characters are valid in pure JSON but are not\n valid in JavaScript strings.)\n\n :escape-slash boolean\n\n If true (default) the slash / is escaped as \\/\n\n :sql-date-converter function\n\n Single-argument function used to convert a java.sql.Date to\n a java.time.Instant. As java.sql.Date does not have a\n time-component (which is required by java.time.Instant), it needs\n to be computed. The default implementation, `default-sql-date->instant-fn`\n uses\n ```\n (.toInstant (.atStartOfDay (.toLocalDate sql-date) (java.time.ZoneId/systemDefault)))\n ```\n\n :date-formatter\n\n A java.time.DateTimeFormatter instance, defaults to DateTimeFormatter/ISO_INSTANT\n\n :key-fn function\n\n Single-argument function called on map keys; return value will\n replace the property names in the output. Must return a\n string. Default calls clojure.core/name on symbols and\n keywords and clojure.core/str on everything else.\n\n :value-fn function\n\n Function to transform values in maps before writing. For each\n key-value pair in an input map, called with two arguments: the\n key (BEFORE transformation by key-fn) and the value. The\n return value of value-fn will replace the value in the output.\n If the return value is a number, boolean, string, or nil it\n will be included literally in the output. If the return value\n is a non-map collection, it will be processed recursively. If\n the return value is a map, it will be processed recursively,\n calling value-fn again on its key-value pairs. If value-fn\n returns itself, the key-value pair will be omitted from the\n output. This option does not apply to non-map collections.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/write"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj", + :name "write-json", + :file "src/main/clojure/clojure/data/json_compat_0_1.clj", + :source-url + "https://github.com/clojure/data.json/blob/d3cce5b200031cf22603c13a9a39e3939651d344/src/main/clojure/clojure/data/json_compat_0_1.clj#L35", + :line 35, + :var-type "function", + :arglists ([x out escape-unicode?]), + :doc + "DEPRECATED; replaced by 'write'.\n\nPrint object to PrintWriter out as JSON", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/write-json"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj", + :name "write-str", + :file "src/main/clojure/clojure/data/json.clj", + :source-url + "https://github.com/clojure/data.json/blob/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj#L564", + :line 564, + :var-type "function", + :arglists ([x & {:as options}]), + :doc + "Converts x to a JSON-formatted string. Options are the same as\nwrite.", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/write-str"} + {:raw-source-url + "https://github.com/clojure/data.json/raw/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj", + :name "JSONWriter", + :file "src/main/clojure/clojure/data/json.clj", + :source-url + "https://github.com/clojure/data.json/blob/66f946edc83f59034f0c139cffe737367216c382/src/main/clojure/clojure/data/json.clj#L310", + :line 310, + :var-type "protocol", + :arglists nil, + :doc nil, + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/JSONWriter"} + {:raw-source-url nil, + :name "-write", + :file nil, + :source-url nil, + :var-type "function", + :arglists ([object out options]), + :doc "Print object to Appendable out as JSON", + :namespace "clojure.data.json", + :wiki-url + "https://clojure.github.io/data.json//index.html#clojure.data.json/-write"})} diff --git a/index.html b/index.html new file mode 100644 index 0000000..b7ab837 --- /dev/null +++ b/index.html @@ -0,0 +1,510 @@ + + + + clojure.data.json - data.json 2.5.2-SNAPSHOT API documentation + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +

API for clojure.data.json + - data.json 2.5.2-SNAPSHOT (in development) +

+by Stuart Sierra
+
Full namespace name: clojure.data.json +

+

Overview

+ +
JavaScript Object Notation (JSON) parser/generator.
+See http://www.json.org/
+ + +
+ +
+

+

Protocols

+
+
+
+

JSONWriter

+ Protocol
+

+    Known implementations: clojure.lang.BigInt, clojure.lang.Named, clojure.lang.Ratio, java.lang.Boolean, java.lang.Byte, java.lang.CharSequence, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short, java.math.BigDecimal, java.math.BigInteger, java.sql.Date, java.time.Instant, java.util.Collection, java.util.concurrent.atomic.AtomicInteger, java.util.concurrent.atomic.AtomicLong, java.util.Date, java.util.Map, java.util.UUID, nil, Object
+    
+
+

-write

+ function
+
Usage: (-write object out options)
+
+
Print object to Appendable out as JSON
+

+      
+      
+      
+    
+ + + Source +
+
+
+

+

Types

+
+
+
+

ReaderPBR

+ type
+

+    Fields: [rdr]
+ Protocols:
+ Interfaces: clojure.data.json.InternalPBR
+
+
+
+

StringPBR

+ type
+

+    Fields: [s pos len]
+ Protocols:
+ Interfaces: clojure.data.json.InternalPBR
+
+
+
+

+

Public Variables and Functions

+
+
+
+

->ReaderPBR

+ function
+
Usage: (->ReaderPBR rdr)
+
+
Positional factory function for class clojure.data.json.ReaderPBR.
+

+    
+    
+    Source
+  
+
+
+

->StringPBR

+ function
+
Usage: (->StringPBR s pos len)
+
+
Positional factory function for class clojure.data.json.StringPBR.
+

+    
+    
+    Source
+  
+
+
+

json-str

+ function
+
Usage: (json-str x & options)
+
+
DEPRECATED; replaced by 'write-str'.
+
+Converts x to a JSON-formatted string.
+
+Valid options are:
+  :escape-unicode false
+      to turn of \uXXXX escapes of Unicode characters.
+

+    
+    
+    Source
+  
+
+
+

on-extra-throw

+ function
+
Usage: (on-extra-throw val rdr)
+
+
Pass as :extra-data-fn to `read` or `read-str` to throw if data is found
+after the first object.
+

+    
+    
+    Source
+  
+
+
+

on-extra-throw-remaining

+ function
+
Usage: (on-extra-throw-remaining val rdr)
+
+
Pass as :extra-data-fn to `read` or `read-str` to throw if data is found
+after the first object and return the remaining data in ex-data :remaining.
+

+    
+    
+    Source
+  
+
+
+

pprint

+ function
+
Usage: (pprint x & {:as options})
+
+
Pretty-prints JSON representation of x to *out*. Options are the same
+as for write except :value-fn and :indent, which are not supported.
+

+    
+    
+    Source
+  
+
+
+

pprint-json

+ function
+
Usage: (pprint-json x & options)
+
+
DEPRECATED; replaced by 'pprint'.
+
+Pretty-prints JSON representation of x to *out*.
+
+Valid options are:
+  :escape-unicode false
+      to turn off \uXXXX escapes of Unicode characters.
+

+    
+    
+    Source
+  
+
+
+

print-json

+ function
+
Usage: (print-json x & options)
+
+
DEPRECATED; replaced by 'write' to *out*.
+
+Write JSON-formatted output to *out*.
+
+Valid options are:
+  :escape-unicode false
+      to turn off \uXXXX escapes of Unicode characters.
+

+    
+    
+    Source
+  
+
+
+

read

+ function
+
Usage: (read reader & {:as options})
+
+
Reads a single item of JSON data from a java.io.Reader.
+
+If you wish to repeatedly read items from the same reader, you must
+supply a PushbackReader with buffer size >= 64, and reuse it on
+subsequent calls.
+
+Options are key-value pairs, valid options are:
+
+   :eof-error? boolean
+
+      If true (default) will throw exception if the stream is empty.
+
+   :eof-value Object
+
+      Object to return if the stream is empty and eof-error? is
+      false. Default is nil.
+
+   :bigdec boolean
+
+      If true use BigDecimal for decimal numbers instead of Double.
+      Default is false.
+
+   :key-fn function
+
+      Single-argument function called on JSON property names; return
+      value will replace the property names in the output. Default
+      is clojure.core/identity, use clojure.core/keyword to get
+      keyword properties.
+
+   :value-fn function
+
+      Function to transform values in maps ("objects" in JSON) in
+      the output. For each JSON property, value-fn is called with
+      two arguments: the property name (transformed by key-fn) and
+      the value. The return value of value-fn will replace the value
+      in the output. If value-fn returns itself, the property will
+      be omitted from the output. The default value-fn returns the
+      value unchanged. This option does not apply to non-map
+      collections.
+
+   :extra-data-fn function
+
+     If :extra-data-fn is not nil, then the reader will be checked
+     for extra data after the read. If found, the extra-data-fn will
+     be invoked with the read value and the reader. The result of
+     the extra-data-fn will be returned.
+

+    
+    
+    Source
+  
+
+
+

read-json

+ function
+
Usage: (read-json input)
+       (read-json input keywordize?)
+       (read-json input keywordize? eof-error? eof-value)
+
+
DEPRECATED; replaced by read-str.
+
+Reads one JSON value from input String or Reader. If keywordize? is
+true (default), object keys will be converted to keywords. If
+eof-error? is true (default), empty input will throw an
+EOFException; if false EOF will return eof-value.
+

+    
+    
+    Source
+  
+
+
+

read-str

+ function
+
Usage: (read-str string & {:as options})
+
+
Reads one JSON value from input String. Options are the same as for
+read.
+

+    
+    
+    Source
+  
+
+
+

write

+ function
+
Usage: (write x writer & {:as options})
+
+
Write JSON-formatted output to a java.io.Writer. Options are
+key-value pairs, valid options are:
+
+ :escape-unicode boolean
+
+    If true (default) non-ASCII characters are escaped as \uXXXX
+
+ :escape-js-separators boolean
+
+    If true (default) the Unicode characters U+2028 and U+2029 will
+    be escaped as \u2028 and \u2029 even if :escape-unicode is
+    false. (These two characters are valid in pure JSON but are not
+    valid in JavaScript strings.)
+
+ :escape-slash boolean
+
+    If true (default) the slash / is escaped as \/
+
+ :sql-date-converter function
+
+    Single-argument function used to convert a java.sql.Date to
+    a java.time.Instant. As java.sql.Date does not have a
+    time-component (which is required by java.time.Instant), it needs
+    to be computed. The default implementation, `default-sql-date->instant-fn`
+    uses
+    ```
+       (.toInstant (.atStartOfDay (.toLocalDate sql-date) (java.time.ZoneId/systemDefault)))
+    ```
+
+ :date-formatter
+
+     A java.time.DateTimeFormatter instance, defaults to DateTimeFormatter/ISO_INSTANT
+
+ :key-fn function
+
+     Single-argument function called on map keys; return value will
+     replace the property names in the output. Must return a
+     string. Default calls clojure.core/name on symbols and
+     keywords and clojure.core/str on everything else.
+
+ :value-fn function
+
+     Function to transform values in maps before writing. For each
+     key-value pair in an input map, called with two arguments: the
+     key (BEFORE transformation by key-fn) and the value. The
+     return value of value-fn will replace the value in the output.
+     If the return value is a number, boolean, string, or nil it
+     will be included literally in the output. If the return value
+     is a non-map collection, it will be processed recursively. If
+     the return value is a map, it will be processed recursively,
+     calling value-fn again on its key-value pairs. If value-fn
+     returns itself, the key-value pair will be omitted from the
+     output. This option does not apply to non-map collections.
+
+  :default-write-fn function
+
+     Function to handle types which are unknown to data.json. Defaults
+     to a function which throws an exception. Expects to be called with
+     three args, the value to be serialized, the output stream, and the
+     options map.
+
+ :indent boolean
+
+     If true, indent json while writing (default = false).
+

+    
+    
+    Source
+  
+
+
+

write-json

+ function
+
Usage: (write-json x out escape-unicode?)
+
+
DEPRECATED; replaced by 'write'.
+
+Print object to PrintWriter out as JSON
+

+    
+    
+    Source
+  
+
+
+

write-str

+ function
+
Usage: (write-str x & {:as options})
+
+
Converts x to a JSON-formatted string. Options are the same as
+write.
+

+    
+    
+    Source
+  
+
+ + +
+
+
+
+
+ +
+
Logo & site design by Tom Hickey.
+ Clojure auto-documentation system by Tom Faulhaber.
+
+ + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 7af80aa..0000000 --- a/pom.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - 4.0.0 - data.json - 2.5.3-SNAPSHOT - data.json - Generating/parsing JSON from/to Clojure data structures - https://github.com/clojure/data.json - - - - Stuart Sierra - mail@stuartsierra.com - http://stuartsierra.com/ - -5 - - - - - org.clojure - pom.contrib - 1.4.0 - - - - scm:git:git@github.com:clojure/data.json - scm:git:git@github.com:clojure/data.json - git@github.com:clojure/data.json.git - HEAD - - - - 1.11.4 - - - - - org.clojure - test.check - 1.1.3 - test - - - - - - - com.theoryinpractise - clojure-maven-plugin - 1.7.1 - - false - -Dclojure.compiler.direct-linking=true - - - - clojure-compile - compile - - compile - - - true - - clojure.data.json - clojure.data.json-compat-0-1 - - - - - - - maven-jar-plugin - 3.5.0 - - - default-jar - package - - jar - - - - **/*.clj - - - - - javadoc-jar - package - - jar - - - javadoc - - **/*.html - - - - - - - maven-assembly-plugin - 3.8.0 - - - aot-jar - package - - single - - - - src/assembly/aot.xml - - - - - - - - diff --git a/project.clj b/project.clj deleted file mode 100644 index 17f63e4..0000000 --- a/project.clj +++ /dev/null @@ -1,19 +0,0 @@ -;; NOTE: Used only for perf testing - this project is built with Maven (see pom.xml) -(defproject clojure.data.json "1.1.1-SNAPSHOT" - :dependencies [[org.clojure/clojure "1.12.4"]] - :source-paths ["src/main/clojure"] - :java-source-paths ["src/main/java"] - :java-test-paths ["src/test/java"] - :test-paths ["src/test/clojure" "src/test/clojure-perf"] - :profiles {:dev {:dependencies [[com.clojure-goes-fast/clj-async-profiler "1.6.2"] - [com.clojure-goes-fast/clj-java-decompiler "0.3.7"] - [org.clojure/test.check "1.1.3"] - [criterium/criterium "0.4.6"] - [metosin/jsonista "0.3.13"] - [cheshire/cheshire "6.1.0"] - [org.openjdk.jmh/jmh-core "1.37"] - [jmh-clojure "0.4.1"] - [com.jsoniter/jsoniter "0.9.23"]] - :resource-paths ["dev-resources"] - :global-vars {*warn-on-reflection* true}}} - :jvm-opts ["-Djdk.attach.allowAttachSelf=true"]) diff --git a/src/assembly/aot.xml b/src/assembly/aot.xml deleted file mode 100644 index 9fac531..0000000 --- a/src/assembly/aot.xml +++ /dev/null @@ -1,18 +0,0 @@ - - aot - - jar - - false - - - src/resources - / - true - - - target/classes - / - - - diff --git a/src/main/clojure/clojure/data/json.clj b/src/main/clojure/clojure/data/json.clj deleted file mode 100644 index 8afcd14..0000000 --- a/src/main/clojure/clojure/data/json.clj +++ /dev/null @@ -1,981 +0,0 @@ -;; Copyright (c) Stuart Sierra, 2012. All rights reserved. The use -;; and distribution terms for this software are covered by the Eclipse -;; Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) -;; which can be found in the file epl-v10.html at the root of this -;; distribution. By using this software in any fashion, you are -;; agreeing to be bound by the terms of this license. You must not -;; remove this notice, or any other, from this software. - -(ns ^{:author "Stuart Sierra" - :doc "JavaScript Object Notation (JSON) parser/generator. - See http://www.json.org/"} - clojure.data.json - (:refer-clojure :exclude (read)) - (:require [clojure.pprint :as pprint]) - (:import (java.io PrintWriter PushbackReader StringWriter - Writer StringReader EOFException))) - -;; CUSTOM PUSHBACK READER - -(set! *warn-on-reflection* true) - -(definterface InternalPBR - (^int readChar []) - (^long readChars [^chars buffer ^long start ^long bufflen]) - (^void unreadChar [^int c]) - (^void unreadChars [^chars buffer ^int off ^int bufflen]) - (^java.io.Reader toReader [])) - -(deftype ReaderPBR [^PushbackReader rdr] - InternalPBR - (readChar [_] - (.read rdr)) - (readChars [_ buffer start bufflen] - (.read rdr ^chars buffer start bufflen)) - (unreadChar [_ c] - ;; ASSERT: c should never be -1 (EOF) - (.unread rdr c)) - (unreadChars [_ buffer start bufflen] - (.unread rdr buffer start bufflen)) - (toReader [_] - rdr)) - -(comment - (compile 'clojure.data.json) - ) - -(deftype StringPBR [^String s ^:unsynchronized-mutable ^long pos ^long len] - InternalPBR - (readChar [_] - (if (< pos len) - (let [p pos] - (set! pos (unchecked-inc pos)) - (let [c (int (.charAt s p))] - c)) - (let [i (int -1)] - i))) - (readChars [_ buffer start bufflen] - (let [remaining (- len pos) - n (Math/min remaining bufflen)] - (when (pos? n) - (let [p pos - end (+ p n)] - (set! pos end) - (.getChars ^String s p end ^chars buffer start))) - (if (pos? n) n -1))) - (unreadChar [_ _c] - ;; ASSERT: c should never be -1 (EOF) - (set! pos (unchecked-dec pos)) - nil) - (unreadChars [_ _buffer _start bufflen] - (set! pos (unchecked-subtract pos bufflen)) - nil) - (toReader [_] - (StringReader. (.subSequence s pos len)))) - -(defn- pushback-pbr - [^PushbackReader r] - (->ReaderPBR r)) - -(defn- string-pbr - [^String s] - (->StringPBR s 0 (.length s))) - -;;; JSON READER - -(set! *warn-on-reflection* true) - -(defn- default-write-key-fn - [x] - (cond (instance? clojure.lang.Named x) - (name x) - (nil? x) - (throw (Exception. "JSON object properties may not be nil")) - :else (str x))) - -(defn- default-value-fn [k v] v) - -(declare -read) - -(defmacro ^:private codepoint [c] - (int c)) - -(defn- codepoint-clause [[test result]] - (cond (list? test) - [(map int test) result] - (= test :whitespace) - ['(9 10 13 32) result] - (= test :js-separators) - ['(16r2028 16r2029) result] - :else - [(int test) result])) - -(defmacro ^:private codepoint-case [e & clauses] - `(case ~e - ~@(mapcat codepoint-clause (partition 2 clauses)) - ~@(when (odd? (count clauses)) - [(last clauses)]))) - -(defn- read-hex-char [^InternalPBR stream] - ;; Expects to be called with the head of the stream AFTER the - ;; initial "\u". Reads the next four characters from the stream. - (let [a (.readChar stream) - b (.readChar stream) - c (.readChar stream) - d (.readChar stream)] - (when (or (neg? a) (neg? b) (neg? c) (neg? d)) - (throw (EOFException. - "JSON error (end-of-file inside Unicode character escape)"))) - (let [s (str (char a) (char b) (char c) (char d))] - (char (Integer/parseInt s 16))))) - -(defn- read-escaped-char [^InternalPBR stream] - ;; Expects to be called with the head of the stream AFTER the - ;; initial backslash. - (let [c (.readChar stream)] - (when (neg? c) - (throw (EOFException. "JSON error (end-of-file inside escaped char)"))) - (codepoint-case c - (\" \\ \/) (char c) - \b \backspace - \f \formfeed - \n \newline - \r \return - \t \tab - \u (read-hex-char stream)))) - -(defn- slow-read-string [^InternalPBR stream ^String already-read] - (let [buffer (StringBuilder. already-read)] - (loop [] - (let [c (.readChar stream)] - (when (neg? c) - (throw (EOFException. "JSON error (end-of-file inside string)"))) - (codepoint-case c - \" (str buffer) - \\ (do (.append buffer (read-escaped-char stream)) - (recur)) - (do (.append buffer (char c)) - (recur))))))) - -(defn- read-quoted-string [^InternalPBR stream] - ;; Expects to be called with the head of the stream AFTER the - ;; opening quotation mark. - (let [buffer ^chars (char-array 64) - read (.readChars stream buffer 0 64) - end-index (unchecked-dec-int read)] - (when (neg? read) - (throw (EOFException. "JSON error (end-of-file inside string)"))) - (loop [i (int 0)] - (let [c (int (aget buffer i))] - (codepoint-case c - \" (let [off (unchecked-inc-int i) - len (unchecked-subtract-int read off)] - (.unreadChars stream buffer off len) - (String. buffer 0 i)) - \\ (let [off i - len (unchecked-subtract-int read off)] - (.unreadChars stream buffer off len) - (slow-read-string stream (String. buffer 0 i))) - (if (= i end-index) - (do (.unreadChar stream c) - (slow-read-string stream (String. buffer 0 i))) - (recur (unchecked-inc-int i)))))))) - -(defn- read-integer [^String string] - (if (< (count string) 18) ; definitely fits in a Long - (Long/valueOf string) - (or (try (Long/valueOf string) - (catch NumberFormatException e nil)) - (bigint string)))) - -(defn- read-decimal [^String string bigdec?] - (if bigdec? - (bigdec string) - (Double/valueOf string))) - -(defn- read-number [^InternalPBR stream bigdec?] - (let [buffer (StringBuilder.) - decimal? (loop [stage :minus] - (let [c (.readChar stream)] - (case stage - :minus - (codepoint-case c - \- - (do (.append buffer (char c)) - (recur :int-zero)) - \0 - (do (.append buffer (char c)) - (recur :frac-point)) - (\1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.append buffer (char c)) - (recur :int-digit)) - (throw (Exception. "JSON error (invalid number literal)"))) - ;; Number must either be a single 0 or 1-9 followed by 0-9 - :int-zero - (codepoint-case c - \0 - (do (.append buffer (char c)) - (recur :frac-point)) - (\1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.append buffer (char c)) - (recur :int-digit)) - (throw (Exception. "JSON error (invalid number literal)"))) - ;; at this point, there is at least one digit - :int-digit - (codepoint-case c - (\0 \1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.append buffer (char c)) - (recur :int-digit)) - \. - (do (.append buffer (char c)) - (recur :frac-first)) - (\e \E) - (do (.append buffer (char c)) - (recur :exp-symbol)) - ;; early exit - :whitespace - (do (.unreadChar stream c) - false) - (\, \] \}) - (do (.unreadChar stream c) - false) - -1 - false - (throw (Exception. "JSON error (invalid number literal)"))) - ;; previous character is a "0" - :frac-point - (codepoint-case c - \. - (do (.append buffer (char c)) - (recur :frac-first)) - (\e \E) - (do (.append buffer (char c)) - (recur :exp-symbol)) - ;; early exit - :whitespace - (do (.unreadChar stream c) - false) - (\, \] \}) - (do (.unreadChar stream c) - false) - -1 - false - ;; Disallow zero-padded numbers or invalid characters - (throw (Exception. "JSON error (invalid number literal)"))) - ;; previous character is a "." - :frac-first - (codepoint-case c - (\0 \1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.append buffer (char c)) - (recur :frac-digit)) - (throw (Exception. "JSON error (invalid number literal)"))) - ;; any number of following digits - :frac-digit - (codepoint-case c - (\0 \1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.append buffer (char c)) - (recur :frac-digit)) - (\e \E) - (do (.append buffer (char c)) - (recur :exp-symbol)) - ;; early exit - :whitespace - (do (.unreadChar stream c) - true) - (\, \] \}) - (do (.unreadChar stream c) - true) - -1 - true - (throw (Exception. "JSON error (invalid number literal)"))) - ;; previous character is a "e" or "E" - :exp-symbol - (codepoint-case c - (\- \+) - (do (.append buffer (char c)) - (recur :exp-first)) - (\0 \1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.append buffer (char c)) - (recur :exp-digit))) - ;; previous character is a "-" or "+" - ;; must have at least one digit - :exp-first - (codepoint-case c - (\0 \1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.append buffer (char c)) - (recur :exp-digit)) - (throw (Exception. "JSON error (invalid number literal)"))) - ;; any number of following digits - :exp-digit - (codepoint-case c - (\0 \1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.append buffer (char c)) - (recur :exp-digit)) - :whitespace - (do (.unreadChar stream c) - true) - (\, \] \}) - (do (.unreadChar stream c) - true) - -1 - true - (throw (Exception. "JSON error (invalid number literal)"))))))] - (if decimal? - (read-decimal (str buffer) bigdec?) - (read-integer (str buffer))))) - -(defn- next-token [^InternalPBR stream] - (loop [c (.readChar stream)] - (if (< 32 c) - (int c) - (codepoint-case (int c) - :whitespace (recur (.readChar stream)) - c)))) - -(defn invalid-array-exception [] - (Exception. "JSON error (invalid array)")) - -(defn- eof-array-exception [] - (EOFException. "JSON error (EOF in array)")) - -(defn- read-array* [^InternalPBR stream options] - ;; Handles all array values after the first. - (loop [result (transient [])] - (let [r (conj! result (-read stream true nil options))] - (codepoint-case (int (next-token stream)) - \] (persistent! r) - \, (recur r) - -1 (throw (eof-array-exception)) - (throw (invalid-array-exception)))))) - -(defn- read-array [^InternalPBR stream options] - ;; Expects to be called with the head of the stream AFTER the - ;; opening bracket. - ;; Only handles array value. - (let [c (int (next-token stream))] - (codepoint-case c - \] [] - \, (throw (invalid-array-exception)) - -1 (throw (eof-array-exception)) - (do (.unreadChar stream c) - (read-array* stream options))))) - -(defn- object-colon-exception [] - (Exception. "JSON error (missing `:` in object)")) - -(defn- eof-object-exception [] - (EOFException. "JSON error (EOF in object)")) - -(defn- invalid-key-exception [c] - (if (= c -1) - (throw (eof-object-exception)) - (throw (Exception. (str "JSON error (non-string key in object), found `" (char c) "`, expected `\"`"))))) - -(comment - (compile 'clojure.data.json) - ) - -(defn- read-key [^InternalPBR stream] - (let [c (int (next-token stream))] - (if (= c (codepoint \")) - (let [key (read-quoted-string stream)] - (if (= (codepoint \:) (int (next-token stream))) - key - (throw (object-colon-exception)))) - (if (= c (codepoint \})) - nil - (invalid-key-exception c))))) - -(defn- read-object [^InternalPBR stream options] - ;; Expects to be called with the head of the stream AFTER the - ;; opening bracket. - (let [key-fn (get options :key-fn) - value-fn (get options :value-fn)] - (loop [result (transient {})] - (if-let [key (read-key stream)] - (let [key (cond-> key key-fn key-fn) - value (-read stream true nil options) - r (if value-fn - (let [out-value (value-fn key value)] - (if-not (= value-fn out-value) - (assoc! result key out-value) - result)) - (assoc! result key value))] - (codepoint-case (int (next-token stream)) - \, (recur r) - \} (persistent! r) - -1 (throw (eof-object-exception)) - (throw (Exception. "JSON error (missing entry in object)")))) - (let [r (persistent! result)] - (if (empty? r) - r - (throw (Exception. "JSON error empty entry in object is not allowed")))))))) - -(defn- -read - [^InternalPBR stream eof-error? eof-value options] - (let [c (int (next-token stream))] - (codepoint-case c - ;; Read numbers - (\- \0 \1 \2 \3 \4 \5 \6 \7 \8 \9) - (do (.unreadChar stream c) - (read-number stream (:bigdec options))) - - ;; Read strings - \" (read-quoted-string stream) - - ;; Read null as nil - \n (if (and (= (codepoint \u) (.readChar stream)) - (= (codepoint \l) (.readChar stream)) - (= (codepoint \l) (.readChar stream))) - nil - (throw (Exception. "JSON error (expected null)"))) - - ;; Read true - \t (if (and (= (codepoint \r) (.readChar stream)) - (= (codepoint \u) (.readChar stream)) - (= (codepoint \e) (.readChar stream))) - true - (throw (Exception. "JSON error (expected true)"))) - - ;; Read false - \f (if (and (= (codepoint \a) (.readChar stream)) - (= (codepoint \l) (.readChar stream)) - (= (codepoint \s) (.readChar stream)) - (= (codepoint \e) (.readChar stream))) - false - (throw (Exception. "JSON error (expected false)"))) - - ;; Read JSON objects - \{ (read-object stream options) - - ;; Read JSON arrays - \[ (read-array stream options) - - (if (neg? c) ;; Handle end-of-stream - (if eof-error? - (throw (EOFException. "JSON error (end-of-file)")) - eof-value) - (throw (Exception. - (str "JSON error (unexpected character): " (char c)))))))) - -(defn- -read1 - [^InternalPBR stream eof-error? eof-value options] - (let [val (-read stream eof-error? eof-value options)] - (if-let [extra-data-fn (:extra-data-fn options)] - (if (or eof-error? (not (identical? eof-value val))) - (let [c (.readChar stream)] - (if (neg? c) - val - (do - (.unreadChar stream c) - (extra-data-fn val (.toReader stream))))) - val) - val))) - -(defn on-extra-throw - "Pass as :extra-data-fn to `read` or `read-str` to throw if data is found - after the first object." - [val rdr] - (throw (ex-info "Found extra data after json object" {:val val}))) - -(defn on-extra-throw-remaining - "Pass as :extra-data-fn to `read` or `read-str` to throw if data is found - after the first object and return the remaining data in ex-data :remaining." - [val rdr] - (let [remaining (slurp rdr)] - (throw (ex-info (str "Found extra data after json object: " remaining) - {:val val, :remaining remaining})))) - -(def default-read-options {:bigdec false - :key-fn nil - :value-fn nil}) -(defn read - "Reads a single item of JSON data from a java.io.Reader. - - If you wish to repeatedly read items from the same reader, you must - supply a PushbackReader with buffer size >= 64, and reuse it on - subsequent calls. - - Options are key-value pairs, valid options are: - - :eof-error? boolean - - If true (default) will throw exception if the stream is empty. - - :eof-value Object - - Object to return if the stream is empty and eof-error? is - false. Default is nil. - - :bigdec boolean - - If true use BigDecimal for decimal numbers instead of Double. - Default is false. - - :key-fn function - - Single-argument function called on JSON property names; return - value will replace the property names in the output. Default - is clojure.core/identity, use clojure.core/keyword to get - keyword properties. - - :value-fn function - - Function to transform values in maps (\"objects\" in JSON) in - the output. For each JSON property, value-fn is called with - two arguments: the property name (transformed by key-fn) and - the value. The return value of value-fn will replace the value - in the output. If value-fn returns itself, the property will - be omitted from the output. The default value-fn returns the - value unchanged. This option does not apply to non-map - collections. - - :extra-data-fn function - - If :extra-data-fn is not nil, then the reader will be checked - for extra data after the read. If found, the extra-data-fn will - be invoked with the read value and the reader. The result of - the extra-data-fn will be returned." - [reader & {:as options}] - (let [{:keys [eof-error? eof-value] - :or {eof-error? true}} options - pbr (pushback-pbr - (if (instance? PushbackReader reader) - reader - (PushbackReader. reader 64)))] - (->> options - (merge default-read-options) - (-read1 pbr eof-error? eof-value)))) - -(defn read-str - "Reads one JSON value from input String. Options are the same as for - read." - [string & {:as options}] - (let [{:keys [eof-error? eof-value] - :or {eof-error? true}} options] - (->> options - (merge default-read-options) - (-read1 (string-pbr string) eof-error? eof-value)))) - -;;; JSON WRITER - - -(defprotocol JSONWriter - (-write [object out options] - "Print object to Appendable out as JSON")) - -(defn- ->hex-string [^Appendable out cp] - (let [cpl (long cp)] - (.append out "\\u") - (cond - (< cpl 16) - (.append out "000") - (< cpl 256) - (.append out "00") - (< cpl 4096) - (.append out "0")) - (.append out (Integer/toHexString cp)))) - -(def ^{:tag "[S"} codepoint-decoder - (let [shorts (short-array 128)] - (dotimes [i 128] - (codepoint-case i - \" (aset shorts i (short 1)) - \\ (aset shorts i (short 1)) - \/ (aset shorts i (short 2)) - \backspace (aset shorts i (short 3)) - \formfeed (aset shorts i (short 4)) - \newline (aset shorts i (short 5)) - \return (aset shorts i (short 6)) - \tab (aset shorts i (short 7)) - (if (< i 32) - (aset shorts i (short 8)) - (aset shorts i (short 0))))) - shorts)) - -(defn- slow-write-string [^CharSequence s ^Appendable out options] - (let [decoder codepoint-decoder - slash (get options :escape-slash) - escape-js-separators (get options :escape-js-separators) - escape-unicode (get options :escape-unicode)] - (dotimes [i (.length s)] - (let [cp (int (.charAt s i))] - (if (< cp 128) - (case (aget decoder cp) - 0 (.append out (char cp)) - 1 (do (.append out (char (codepoint \\))) (.append out (char cp))) - 2 (.append out (if slash "\\/" "/")) - 3 (.append out "\\b") - 4 (.append out "\\f") - 5 (.append out "\\n") - 6 (.append out "\\r") - 7 (.append out "\\t") - 8 (->hex-string out cp)) - (codepoint-case cp - :js-separators (if escape-js-separators - (->hex-string out cp) - (.append out (char cp))) - (if escape-unicode - (->hex-string out cp) ; Hexadecimal-escaped - (.append out (char cp))))))))) - -(defn- write-string [^CharSequence s ^Appendable out options] - (let [decoder codepoint-decoder - l (.length s)] - (.append out \") - (loop [i 0] - (if (= i l) - (.append out s) - (let [cp (int (.charAt s i))] - (if (and (< cp 128) - (zero? (aget decoder cp))) - (recur (unchecked-inc i)) - (do - (.append out s 0 i) - (slow-write-string (.subSequence s i l) out options)))))) - (.append out \"))) - -(defn- write-indent [^Appendable out options] - (let [indent-depth (:indent-depth options)] - (.append out \newline) - (loop [i indent-depth] - (when (pos? i) - (.append out " ") - (recur (dec i)))))) - -(defn- write-object [m ^Appendable out options] - (let [key-fn (get options :key-fn) - value-fn (get options :value-fn) - indent (get options :indent) - opts (cond-> options - indent (update :indent-depth inc))] - (.append out \{) - (when (and indent (seq m)) - (write-indent out opts)) - (loop [x m, have-printed-kv false] - (when (seq x) - (let [[k v] (first x) - out-key (key-fn k) - out-value (value-fn k v) - nxt (next x)] - (when-not (string? out-key) - (throw (Exception. "JSON object keys must be strings"))) - (if-not (= value-fn out-value) - (do - (when have-printed-kv - (.append out \,) - (when indent - (write-indent out opts))) - (write-string out-key out opts) - (.append out \:) - (when indent - (.append out \space)) - (-write out-value out opts) - (when (seq nxt) - (recur nxt true))) - (when (seq nxt) - (recur nxt have-printed-kv)))))) - (when (and indent (seq m)) - (write-indent out options))) - (.append out \})) - -(defn- write-array [s ^Appendable out options] - (let [indent (get options :indent) - opts (cond-> options - indent (update :indent-depth inc))] - (.append out \[) - (when (and indent (seq s)) - (write-indent out opts)) - (loop [x s] - (when (seq x) - (let [fst (first x) - nxt (next x)] - (-write fst out opts) - (when (seq nxt) - (.append out \,) - (when indent - (write-indent out opts)) - (recur nxt))))) - (when (and indent (seq s)) - (write-indent out options))) - (.append out \])) - -(defn- write-bignum [x ^Appendable out options] - (.append out (str x))) - -(defn- write-float [^Float x ^Appendable out options] - (cond (.isInfinite x) - (throw (Exception. "JSON error: cannot write infinite Float")) - (.isNaN x) - (throw (Exception. "JSON error: cannot write Float NaN")) - :else - (.append out (str x)))) - -(defn- write-double [^Double x ^Appendable out options] - (cond (.isInfinite x) - (throw (Exception. "JSON error: cannot write infinite Double")) - (.isNaN x) - (throw (Exception. "JSON error: cannot write Double NaN")) - :else - (.append out (str x)))) - -(defn- write-plain [x ^Appendable out options] - (.append out (str x))) - -(defn- write-uuid [^java.util.UUID x ^Appendable out options] - (.append out \") - (.append out (.toString x)) - (.append out \")) - -(defn- write-instant [^java.time.Instant x ^Appendable out options] - (let [formatter ^java.time.format.DateTimeFormatter (:date-formatter options)] - (.append out \") - (.append out (.format formatter x)) - (.append out \"))) - -(defn- write-date [^java.util.Date x ^Appendable out options] - (write-instant (.toInstant x) out options)) - -(defn- default-sql-date->instant-fn [^java.sql.Date d] - (.toInstant (.atStartOfDay (.toLocalDate d) (java.time.ZoneId/systemDefault)))) - -(defn- write-sql-date [^java.sql.Date x ^Appendable out options] - (let [->instant (:sql-date-converter options)] - (write-instant (->instant x) out options))) - -(defn- write-null [x ^Appendable out options] - (.append out "null")) - -(defn- write-named [x out options] - (write-string (name x) out options)) - -(defn- write-generic [x out options] - (if (.isArray (class x)) - (-write (seq x) out options) - ((:default-write-fn options) x out options))) - -(defn- write-ratio [x out options] - (-write (double x) out options)) - -;; nil, true, false -(extend nil JSONWriter {:-write write-null}) -(extend java.lang.Boolean JSONWriter {:-write write-plain}) - -;; Numbers -(extend java.lang.Byte JSONWriter {:-write write-plain}) -(extend java.lang.Short JSONWriter {:-write write-plain}) -(extend java.lang.Integer JSONWriter {:-write write-plain}) -(extend java.lang.Long JSONWriter {:-write write-plain}) -(extend java.lang.Float JSONWriter {:-write write-float}) -(extend java.lang.Double JSONWriter {:-write write-double}) -(extend clojure.lang.Ratio JSONWriter {:-write write-ratio}) -(extend java.math.BigInteger JSONWriter {:-write write-bignum}) -(extend java.math.BigDecimal JSONWriter {:-write write-bignum}) -(extend java.util.concurrent.atomic.AtomicInteger JSONWriter {:-write write-plain}) -(extend java.util.concurrent.atomic.AtomicLong JSONWriter {:-write write-plain}) -(extend java.util.UUID JSONWriter {:-write write-uuid}) -(extend java.time.Instant JSONWriter {:-write write-instant}) -(extend java.util.Date JSONWriter {:-write write-date}) -(extend java.sql.Date JSONWriter {:-write write-sql-date}) -(extend clojure.lang.BigInt JSONWriter {:-write write-bignum}) - -;; Symbols, Keywords, and Strings -(extend clojure.lang.Named JSONWriter {:-write write-named}) -(extend java.lang.CharSequence JSONWriter {:-write write-string}) - -;; Collections -(extend java.util.Map JSONWriter {:-write write-object}) -(extend java.util.Collection JSONWriter {:-write write-array}) - -;; Maybe a Java array, otherwise fail -(extend java.lang.Object JSONWriter {:-write write-generic}) - -(defn- default-write-fn [x out options] - (throw (Exception. (str "Don't know how to write JSON of " (class x))))) - -(def default-write-options {:escape-unicode true - :escape-js-separators true - :escape-slash true - :sql-date-converter default-sql-date->instant-fn - :date-formatter java.time.format.DateTimeFormatter/ISO_INSTANT - :key-fn default-write-key-fn - :value-fn default-value-fn - :default-write-fn default-write-fn - :indent false - :indent-depth 0 ;; internal, to track nesting depth - }) -(defn write - "Write JSON-formatted output to a java.io.Writer. Options are - key-value pairs, valid options are: - - :escape-unicode boolean - - If true (default) non-ASCII characters are escaped as \\uXXXX - - :escape-js-separators boolean - - If true (default) the Unicode characters U+2028 and U+2029 will - be escaped as \\u2028 and \\u2029 even if :escape-unicode is - false. (These two characters are valid in pure JSON but are not - valid in JavaScript strings.) - - :escape-slash boolean - - If true (default) the slash / is escaped as \\/ - - :sql-date-converter function - - Single-argument function used to convert a java.sql.Date to - a java.time.Instant. As java.sql.Date does not have a - time-component (which is required by java.time.Instant), it needs - to be computed. The default implementation, `default-sql-date->instant-fn` - uses - ``` - (.toInstant (.atStartOfDay (.toLocalDate sql-date) (java.time.ZoneId/systemDefault))) - ``` - - :date-formatter - - A java.time.DateTimeFormatter instance, defaults to DateTimeFormatter/ISO_INSTANT - - :key-fn function - - Single-argument function called on map keys; return value will - replace the property names in the output. Must return a - string. Default calls clojure.core/name on symbols and - keywords and clojure.core/str on everything else. - - :value-fn function - - Function to transform values in maps before writing. For each - key-value pair in an input map, called with two arguments: the - key (BEFORE transformation by key-fn) and the value. The - return value of value-fn will replace the value in the output. - If the return value is a number, boolean, string, or nil it - will be included literally in the output. If the return value - is a non-map collection, it will be processed recursively. If - the return value is a map, it will be processed recursively, - calling value-fn again on its key-value pairs. If value-fn - returns itself, the key-value pair will be omitted from the - output. This option does not apply to non-map collections. - - :default-write-fn function - - Function to handle types which are unknown to data.json. Defaults - to a function which throws an exception. Expects to be called with - three args, the value to be serialized, the output stream, and the - options map. - - :indent boolean - - If true, indent json while writing (default = false)." - [x ^Writer writer & {:as options}] - (-write x writer (merge default-write-options options))) - -(defn write-str - "Converts x to a JSON-formatted string. Options are the same as - write." - ^String [x & {:as options}] - (let [sw (StringWriter.)] - (-write x sw (merge default-write-options options)) - (.toString sw))) - -;;; JSON PRETTY-PRINTER - -;; Based on code by Tom Faulhaber - -(defn- pprint-array [s] - ((pprint/formatter-out "~<[~;~@{~w~^, ~:_~}~;]~:>") s)) - -(defn- pprint-object [m options] - (let [key-fn (:key-fn options)] - ((pprint/formatter-out "~<{~;~@{~<~w:~_~w~:>~^, ~_~}~;}~:>") - (for [[k v] m] [(key-fn k) v])))) - -(defn- pprint-generic [x options] - (if (.isArray (class x)) - (pprint-array (seq x)) - ;; pprint proxies Writer, so we can't just wrap it - (print (with-out-str (-write x (PrintWriter. *out*) options))))) - -(defn- pprint-dispatch [x options] - (cond (nil? x) (print "null") - (instance? java.util.Map x) (pprint-object x options) - (instance? java.util.Collection x) (pprint-array x) - (instance? clojure.lang.ISeq x) (pprint-array x) - :else (pprint-generic x options))) - -(defn pprint - "Pretty-prints JSON representation of x to *out*. Options are the same - as for write except :value-fn and :indent, which are not supported." - [x & {:as options}] - (let [opts (merge default-write-options options)] - (pprint/with-pprint-dispatch #(pprint-dispatch % opts) - (pprint/pprint x)))) - -;; DEPRECATED APIs from 0.1.x - -(defn read-json - "DEPRECATED; replaced by read-str. - - Reads one JSON value from input String or Reader. If keywordize? is - true (default), object keys will be converted to keywords. If - eof-error? is true (default), empty input will throw an - EOFException; if false EOF will return eof-value." - ([input] - (read-json input true true nil)) - ([input keywordize?] - (read-json input keywordize? true nil)) - ([input keywordize? eof-error? eof-value] - (let [key-fn (if keywordize? keyword identity)] - (condp instance? input - String - (read-str input - :key-fn key-fn - :eof-error? eof-error? - :eof-value eof-value) - java.io.Reader - (read input - :key-fn key-fn - :eof-error? eof-error? - :eof-value eof-value))))) - -(defn write-json - "DEPRECATED; replaced by 'write'. - - Print object to PrintWriter out as JSON" - [x out escape-unicode?] - (write x out :escape-unicode escape-unicode?)) - -(defn json-str - "DEPRECATED; replaced by 'write-str'. - - Converts x to a JSON-formatted string. - - Valid options are: - :escape-unicode false - to turn of \\uXXXX escapes of Unicode characters." - [x & options] - (apply write-str x options)) - -(defn print-json - "DEPRECATED; replaced by 'write' to *out*. - - Write JSON-formatted output to *out*. - - Valid options are: - :escape-unicode false - to turn off \\uXXXX escapes of Unicode characters." - [x & options] - (apply write x *out* options)) - -(defn pprint-json - "DEPRECATED; replaced by 'pprint'. - - Pretty-prints JSON representation of x to *out*. - - Valid options are: - :escape-unicode false - to turn off \\uXXXX escapes of Unicode characters." - [x & options] - (apply pprint x options)) diff --git a/src/test/clojure-perf/clojure/data/json_perf_test.clj b/src/test/clojure-perf/clojure/data/json_perf_test.clj deleted file mode 100644 index 16ff39f..0000000 --- a/src/test/clojure-perf/clojure/data/json_perf_test.clj +++ /dev/null @@ -1,163 +0,0 @@ -(ns clojure.data.json-perf-test - (:require [cheshire.core :as cheshire] - [clj-async-profiler.core :as prof] - [clojure.data.json :as json] - [criterium.core :refer :all] - [jsonista.core :as jsonista] - [clojure.string :as str]) - (:import com.jsoniter.JsonIterator)) - -(defmacro profiling [times & body] - `(try - (prof/start {}) - (dotimes [_# ~times] - ~@body) - (finally - (prof/stop {:transform (fn [s#] - (if (or (str/index-of s# "err_codes_unix") - (str/index-of s# "[")) - nil - (-> s# - (str/replace #"^.+/.*read-profiling.+?;" "START;") - (str/replace #"^.*nextToken.*" "jackson-next-token") - (str/replace #"^.*getText.*" "jackson-get-text") - (str/replace #"^.*next.token.*" "data-json-next-token") - (str/replace #"^.*read.quoted.string.*" "data-json-read_quoted_string") - (str/replace #".*assoc.*" "ASSOC;") - (str/replace #".*Map.*" "ASSOC;"))))})))) - -(defn json-data [size] - (slurp (str "dev-resources/json" size ".json"))) - -(defn do-read-bench [size] - (let [json (json-data size)] - (println "Results for" size "json:") - (println "data.json:") - (println (with-out-str (quick-bench (json/read-str json)))) - (println "cheshire:") - (println (with-out-str (quick-bench (cheshire/parse-string-strict json)))) - (println "jsonista:") - (println (with-out-str (quick-bench (jsonista/read-value json)))) - (println "jsoniter:") - (println (with-out-str (quick-bench (.read (JsonIterator/parse ^String json))))))) - -(defn do-write-bench [size] - (let [edn (json/read-str (json-data size))] - (println "Results for" size "json:") - (println "data.json:") - (println (with-out-str (quick-bench (json/write-str edn)))) - (println "cheshire:") - (println (with-out-str (quick-bench (cheshire/generate-string edn)))) - (println "jsonista:") - (println (with-out-str (quick-bench (jsonista/write-value-as-string edn)))))) - -(defn read-bench-all-sizes [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (do-read-bench size))) - -(defn write-bench-all-sizes [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (do-write-bench size))) - -(defn profile-read-all-sizes [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (let [json (json-data size)] - (profiling 10000 (json/read-str json)) - (Thread/sleep 1000)))) - -(defn profile-write-all-sizes [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (let [edn (json/read-str (json-data size))] - (profiling 10000 (json/write-str edn)) - (Thread/sleep 1000)))) - -(defn read-bench-data-json [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (let [json (json-data size)] - (quick-bench (json/read-str json))))) - -(defn write-bench-data-json [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (let [json (json/read-str (json-data size))] - (quick-bench (json/write-str json))))) - -(defn write-profiling [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (let [json (json/read-str (json-data size))] - (profiling 10000 (json/write-str json))))) - -(defn read-profiling [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (let [json (json-data size)] - (profiling 10000 (json/read-str json))))) - -(defn cheshire-read-profiling [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (let [json (json-data size)] - (profiling 10000 (cheshire/parse-string-strict json))))) - -(defn jsonista-read-profiling [] - (doseq [size ["10b" "100b" "1k" "10k" "100k"]] - (let [json (json-data size)] - (profiling 10000 (jsonista/read-value json))))) - - -(defn benchit [data] - (let [json (json/write-str data)] - (quick-bench (json/read-str json)) - (quick-bench (cheshire/parse-string-strict json)))) - -;; Used to generate 1000-numbers.json -(defn gen-int [] - (str (rand-int 1000))) - -(defn gen-frac [] - (str "." (rand-int 1000))) - -(defn gen-exp [] - (str (rand-nth ["e" "E"]) (rand-nth ["" "-" "+"]) (rand-int 5))) - -(defn generate-random-json-number [] - (case (rand-int 8) - ; int - 0 (gen-int) - 1 (str "-" (gen-int)) - ; frac - 2 (str (gen-int) (gen-frac)) - 3 (str "-" (gen-int) (gen-frac)) - ; exp - 4 (str (gen-int) (gen-exp)) - 5 (str "-" (gen-int) (gen-exp)) - ; combo - 6 (str (gen-int) (gen-frac) (gen-exp)) - 7 (str "-" (gen-int) (gen-frac) (gen-exp)))) - -(defn generate-random-json-numbers [n] - ;; used to generate dev-resources/1000-numbers.json - (->> (for [x (range n)] - (generate-random-json-number)) - (str/join ", ") - (#(str "[" % "]")))) - -(defn read-bench-all-sizes-numbers [] - (let [json (slurp "dev-resources/1000-numbers.json")] - (println "data.json:") - (println (with-out-str (quick-bench (json/read-str json)))) - (println "cheshire:") - (println (with-out-str (quick-bench (cheshire/parse-string-strict json)))) - (println "jsonista:") - (println (with-out-str (quick-bench (jsonista/read-value json)))) - (println "jsoniter:") - (println (with-out-str (quick-bench (.read (JsonIterator/parse ^String json))))))) - -(defn read-bench-nested-arrays [] - (let [json (slurp "dev-resources/nested-arrays.json")] - (println "Results for nested arrays:") - (println "data.json:") - (println (with-out-str (quick-bench (json/read-str json)))) - (println "cheshire:") - (println (with-out-str (quick-bench (cheshire/parse-string-strict json)))) - (println "jsonista:") - (println (with-out-str (quick-bench (jsonista/read-value json)))) - (println "jsoniter:") - (println (with-out-str (quick-bench (.read (JsonIterator/parse ^String json))))))) diff --git a/src/test/clojure/clojure/data/json_compat_0_1_test.clj b/src/test/clojure/clojure/data/json_compat_0_1_test.clj deleted file mode 100644 index 67aa0f7..0000000 --- a/src/test/clojure/clojure/data/json_compat_0_1_test.clj +++ /dev/null @@ -1,226 +0,0 @@ -;; Copyright (c) Stuart Sierra, 2012. All rights reserved. The use and -;; distribution terms for this software are covered by the Eclipse -;; Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) -;; By using this software in any fashion, you are agreeing to be bound -;; by the terms of this license. You must not remove this notice, or -;; any other, from this software. - -(ns clojure.data.json-compat-0-1-test - "Compatibility tests for the 0.1.x data.json API." - (:use clojure.test - [clojure.data.json :only (read-json json-str pprint-json)])) - -(deftest can-read-from-pushback-reader - (let [s (java.io.PushbackReader. (java.io.StringReader. "42"))] - (is (= 42 (read-json s))))) - -(deftest can-read-from-reader - (let [s (java.io.StringReader. "42")] - (is (= 42 (read-json s))))) - -(deftest can-read-numbers - (is (= 42 (read-json "42"))) - (is (= -3 (read-json "-3"))) - (is (= 3.14159 (read-json "3.14159"))) - (is (= 6.022e23 (read-json "6.022e23")))) - -(deftest can-read-null - (is (= nil (read-json "null")))) - -(deftest can-read-strings - (is (= "Hello, World!" (read-json "\"Hello, World!\"")))) - -(deftest handles-escaped-slashes-in-strings - (is (= "/foo/bar" (read-json "\"\\/foo\\/bar\"")))) - -(deftest handles-unicode-escapes - (is (= " \u0beb " (read-json "\" \\u0bEb \"")))) - -(deftest handles-unicode-outside-bmp - (is (= "\"smiling face: \uD83D\uDE03\"" - (json-str "smiling face: \uD83D\uDE03" :escape-unicode false))) - (is (= "\"smiling face: \\ud83d\\ude03\"" - (json-str "smiling face: \uD83D\uDE03" :escape-unicode true)))) - -(deftest handles-escaped-whitespace - (is (= "foo\nbar" (read-json "\"foo\\nbar\""))) - (is (= "foo\rbar" (read-json "\"foo\\rbar\""))) - (is (= "foo\tbar" (read-json "\"foo\\tbar\"")))) - -(deftest can-read-booleans - (is (= true (read-json "true"))) - (is (= false (read-json "false")))) - -(deftest can-ignore-whitespace - (is (= nil (read-json "\r\n null")))) - -(deftest can-read-arrays - (is (= [1 2 3] (read-json "[1,2,3]"))) - (is (= ["Ole" "Lena"] (read-json "[\"Ole\", \r\n \"Lena\"]")))) - -(deftest can-read-objects - (is (= {:a 1, :b 2} (read-json "{\"a\": 1, \"b\": 2}")))) - -(deftest can-read-nested-structures - (is (= {:a [1 2 {:b [3 "four"]} 5.5]} - (read-json "{\"a\":[1,2,{\"b\":[3,\"four\"]},5.5]}")))) - -(deftest disallows-non-string-keys - (is (thrown? Exception (read-json "{26:\"z\"")))) - -(deftest disallows-barewords - (is (thrown? Exception (read-json " foo ")))) - -(deftest disallows-unclosed-arrays - (is (thrown? Exception (read-json "[1, 2, ")))) - -(deftest disallows-unclosed-objects - (is (thrown? Exception (read-json "{\"a\":1, ")))) - -(deftest can-get-string-keys - (is (= {"a" [1 2 {"b" [3 "four"]} 5.5]} - (read-json "{\"a\":[1,2,{\"b\":[3,\"four\"]},5.5]}" false true nil)))) - -(declare pass1-string) - -(deftest pass1-test - (let [input (read-json pass1-string false true nil)] - (is (= "JSON Test Pattern pass1" (first input))) - (is (= "array with 1 element" (get-in input [1 "object with 1 member" 0]))) - (is (= 1234567890 (get-in input [8 "integer"]))) - (is (= "rosebud" (last input))))) - -; from http://www.json.org/JSON_checker/test/pass1.json -(def pass1-string - "[ - \"JSON Test Pattern pass1\", - {\"object with 1 member\":[\"array with 1 element\"]}, - {}, - [], - -42, - true, - false, - null, - { - \"integer\": 1234567890, - \"real\": -9876.543210, - \"e\": 0.123456789e-12, - \"E\": 1.234567890E+34, - \"\": 23456789012E66, - \"zero\": 0, - \"one\": 1, - \"space\": \" \", - \"quote\": \"\\\"\", - \"backslash\": \"\\\\\", - \"controls\": \"\\b\\f\\n\\r\\t\", - \"slash\": \"/ & \\/\", - \"alpha\": \"abcdefghijklmnopqrstuvwyz\", - \"ALPHA\": \"ABCDEFGHIJKLMNOPQRSTUVWYZ\", - \"digit\": \"0123456789\", - \"0123456789\": \"digit\", - \"special\": \"`1~!@#$%^&*()_+-={':[,]}|;.?\", - \"hex\": \"\\u0123\\u4567\\u89AB\\uCDEF\\uabcd\\uef4A\", - \"true\": true, - \"false\": false, - \"null\": null, - \"array\":[ ], - \"object\":{ }, - \"address\": \"50 St. James Street\", - \"url\": \"http://www.JSON.org/\", - \"comment\": \"// /* */\": \" \", - \" s p a c e d \" :[1,2 , 3 - -, - -4 , 5 , 6 ,7 ],\"compact\":[1,2,3,4,5,6,7], - \"jsontext\": \"{\\\"object with 1 member\\\":[\\\"array with 1 element\\\"]}\", - \"quotes\": \"" \\u0022 %22 0x22 034 "\", - \"\\/\\\\\\\"\\uCAFE\\uBABE\\uAB98\\uFCDE\\ubcda\\uef4A\\b\\f\\n\\r\\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?\" -: \"A key can be any string\" - }, - 0.5 ,98.6 -, -99.44 -, - -1066, -1e1, -0.1e1, -1e-1, -1e00,2e+00,2e-00 -,\"rosebud\"]") - - -(deftest can-print-json-strings - (is (= "\"Hello, World!\"" (json-str "Hello, World!"))) - (is (= "\"\\\"Embedded\\\" Quotes\"" (json-str "\"Embedded\" Quotes")))) - -(deftest can-print-unicode - (is (= "\"\\u1234\\u4567\"" (json-str "\u1234\u4567")))) - -(deftest can-print-nonescaped-unicode - (is (= "\"\u1234\u4567\"" (json-str "\u1234\u4567" :escape-unicode false)))) - -(deftest can-print-json-null - (is (= "null" (json-str nil)))) - -(deftest can-print-ratios-as-doubles - (is (= "0.75" (json-str 3/4)))) - -(deftest can-print-bigints - (is (= "12345678901234567890" (json-str 12345678901234567890)))) - -(deftest can-print-json-arrays - (is (= "[1,2,3]" (json-str [1 2 3]))) - (is (= "[1,2,3]" (json-str (list 1 2 3)))) - (is (= "[1,2,3]" (json-str (sorted-set 1 2 3)))) - (is (= "[1,2,3]" (json-str (seq [1 2 3]))))) - -(deftest can-print-java-arrays - (is (= "[1,2,3]" (json-str (into-array [1 2 3]))))) - -(deftest can-print-empty-arrays - (is (= "[]" (json-str []))) - (is (= "[]" (json-str (list)))) - (is (= "[]" (json-str #{})))) - -(deftest can-print-json-objects - (is (= "{\"a\":1,\"b\":2}" (json-str (sorted-map :a 1 :b 2))))) - -(deftest object-keys-must-be-strings - (is (= "{\"1\":1,\"2\":2}" (json-str (sorted-map 1 1 2 2))))) - -(deftest can-print-empty-objects - (is (= "{}" (json-str {})))) - -(deftest accept-sequence-of-nils - (is (= "[null,null,null]" (json-str [nil nil nil])))) - -(deftest error-on-nil-keys - (is (thrown? Exception (json-str {nil 1})))) - -(deftest characters-in-symbols-are-escaped - (is (= "\"foo\\u1b1b\"" (json-str (symbol "foo\u1b1b"))))) - -(deftest default-throws-on-eof - (is (thrown? java.io.EOFException (read-json "")))) - -(deftest can-accept-eof - (is (= ::eof (read-json "" true false ::eof)))) - -(deftest characters-in-map-keys-are-escaped - (is (= (json-str {"\"" 42}) "{\"\\\"\":42}"))) - -;;; Pretty-printer - -(deftest pretty-printing - (let [x (read-json pass1-string false)] - (is (= x (read-json (with-out-str (pprint-json x)) false))))) - -(defn benchmark [] - (dotimes [_ 8] - (time - (dotimes [_ 100] - (assert (= (read-json pass1-string false) - (read-json (json-str (read-json pass1-string false)) false))))))) diff --git a/src/test/clojure/clojure/data/json_gen_test.clj b/src/test/clojure/clojure/data/json_gen_test.clj deleted file mode 100644 index 885d7ae..0000000 --- a/src/test/clojure/clojure/data/json_gen_test.clj +++ /dev/null @@ -1,34 +0,0 @@ -(ns clojure.data.json-gen-test - (:require [clojure.data.json :as json] - [clojure.spec.alpha :as s] - [clojure.spec.gen.alpha :as sgen] - [clojure.spec.test.alpha :as stest] - [clojure.test :refer :all])) - -(s/def ::json-number - (s/with-gen - number? - #(sgen/one-of [(sgen/large-integer) (sgen/double* {:infinite? false :NaN? false})]))) - -(s/def ::json-scalar (s/or :boolean boolean? - :number ::json-number - :string string? - :nil nil?)) - -(s/def ::json-value (s/or :object ::json-object - :array ::json-array - :scalar ::json-scalar)) - -(s/def ::json-array (s/coll-of ::json-value :gen-max 12)) -(s/def ::json-object (s/map-of string? ::json-value - :gen-max 10)) - -(s/fdef json/write-str - :args (s/cat :json ::json-value) - :ret string? - :fn #(= (->> % :args :json (s/unform ::json-value)) - (json/read-str (-> % :ret)))) - -(deftest roundtrip - (let [results (stest/check `json/write-str)] - (is (every? nil? (mapv :failure results))))) diff --git a/src/test/clojure/clojure/data/json_test.clj b/src/test/clojure/clojure/data/json_test.clj deleted file mode 100644 index aa6d79c..0000000 --- a/src/test/clojure/clojure/data/json_test.clj +++ /dev/null @@ -1,514 +0,0 @@ -(ns clojure.data.json-test - (:require [clojure.data.json :as json] - [clojure.test :refer :all] - [clojure.string :as str])) - -(defn pbr - ([s] - (pbr s 64)) - ([s size] - (if (< size 64) - (throw (RuntimeException. "Size must be >= 64")) - (java.io.PushbackReader. (java.io.StringReader. s) size)))) - -(deftest read-from-pushback-reader - (is (= 42 (json/read (pbr "42")))) - (is (= ["abc" "def"] (json/read (pbr "[\"abc\", \"def\"]"))))) - -;; DJSON-50 - pass PBR to safely do repeated read -(deftest read-multiple - (let [st "{\"foo\":\"some string\"}{\"foo\":\"another string\"}" - pbr (pbr st)] - (is (= {"foo" "some string"} (json/read pbr))) - (is (= {"foo" "another string"} (json/read pbr)))) - - (let [st "{\"foo\":\"some string\"}{\"foo\":\"another long ......................................................... string\"}" - pbr (pbr st)] - (is (= {"foo" "some string"} (json/read pbr))) - (is (= {"foo" "another long ......................................................... string"} (json/read pbr))))) - -(defn read-then-eof [s] - (let [r (pbr s) - val (json/read r :eof-error? false :eof-value :EOF)] - (is (= :EOF (json/read r :eof-error? false :eof-value :EOF))) - val)) - -(deftest read-multiple-eof - (are [expected s] (= expected (read-then-eof s)) - 1.2 "1.2" - 0 "0" - 1 "1" - 1.0 "1.0" - "abc" "\"abc\"" - "\u2202" "\"\u2202\"" - [] "[]" - [1 2] "[1, 2]") - ) - -(deftest read-from-reader - (let [s (java.io.StringReader. "42")] - (is (= 42 (json/read s))))) - -(deftest read-numbers - (is (= 42 (json/read-str "42"))) - (is (= -3 (json/read-str "-3"))) - (is (= 3.14159 (json/read-str "3.14159"))) - (is (= 6.022e23 (json/read-str "6.022e23")))) - -(deftest read-bigint - (is (= 123456789012345678901234567890N - (json/read-str "123456789012345678901234567890")))) - -(deftest lenient-on-extra-data - (is (= [42] (json/read-str "[42],abc"))) - (is (= [42] (json/read (java.io.StringReader. "[42],abc"))))) - -(deftest strict-on-extra-data - ;; on-extra-throw - (is (thrown? clojure.lang.ExceptionInfo - (json/read-str "[42],abc" :extra-data-fn json/on-extra-throw))) - (is (thrown? clojure.lang.ExceptionInfo - (json/read (java.io.StringReader. "[42],abc") :extra-data-fn json/on-extra-throw))) - - ;; on-extra-throw-remaining - (try - (json/read-str "[42],abc" :extra-data-fn json/on-extra-throw-remaining) - (is false "expected exception to be thrown") - (catch clojure.lang.ExceptionInfo e - (is (= ",abc" (:remaining (ex-data e)))))) - (try - (json/read-str "[1], 1]" :extra-data-fn json/on-extra-throw-remaining) - (is false "expected exception to be thrown") - (catch clojure.lang.ExceptionInfo e - (is (= ", 1]" (:remaining (ex-data e)))))) - - ;; check that empty input behavior not modified when :extra-data-fn specified - (is (= :hi (json/read-str "" - :eof-error? false, :eof-value :hi, :extra-data-fn json/on-extra-throw))) - (is (= :hi (json/read (java.io.StringReader. "") - :eof-error? false, :eof-value :hi, :extra-data-fn json/on-extra-throw)))) - -(deftest write-bigint - (is (= "123456789012345678901234567890" - (json/write-str 123456789012345678901234567890N)))) - -(deftest read-bigdec - (is (= 3.14159M (json/read-str "3.14159" :bigdec true)))) - -(deftest write-bigdec - (is (= "3.14159" (json/write-str 3.14159M)))) - -(deftest read-null - (is (= nil (json/read-str "null")))) - -(deftest read-strings - (is (= "Hello, World!" (json/read-str "\"Hello, World!\"")))) - -(deftest escaped-slashes-in-strings - (is (= "/foo/bar" (json/read-str "\"\\/foo\\/bar\"")))) - -(deftest unicode-escapes - (is (= " \u0beb " (json/read-str "\" \\u0bEb \"")))) - -(deftest unicode-outside-bmp - (is (= "\"smiling face: \uD83D\uDE03\"" - (json/write-str "smiling face: \uD83D\uDE03" :escape-unicode false))) - (is (= "\"smiling face: \\ud83d\\ude03\"" - (json/write-str "smiling face: \uD83D\uDE03" :escape-unicode true)))) - -(deftest escaped-whitespace - (is (= "foo\nbar" (json/read-str "\"foo\\nbar\""))) - (is (= "foo\rbar" (json/read-str "\"foo\\rbar\""))) - (is (= "foo\tbar" (json/read-str "\"foo\\tbar\"")))) - -(deftest read-booleans - (is (= true (json/read-str "true"))) - (is (= false (json/read-str "false")))) - -(deftest ignore-whitespace - (is (= nil (json/read-str "\r\n null")))) - -(deftest read-arrays - (is (= (vec (range 35)) - (json/read-str "[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]"))) - (is (= ["Ole" "Lena"] (json/read-str "[\"Ole\", \r\n \"Lena\"]")))) - -(deftest read-objects - (is (= {:k1 1, :k2 2, :k3 3, :k4 4, :k5 5, :k6 6, :k7 7, :k8 8 - :k9 9, :k10 10, :k11 11, :k12 12, :k13 13, :k14 14, :k15 15, :k16 16} - (json/read-str "{\"k1\": 1, \"k2\": 2, \"k3\": 3, \"k4\": 4, - \"k5\": 5, \"k6\": 6, \"k7\": 7, \"k8\": 8, - \"k9\": 9, \"k10\": 10, \"k11\": 11, \"k12\": 12, - \"k13\": 13, \"k14\": 14, \"k15\": 15, \"k16\": 16}" - :key-fn keyword)))) - -(deftest read-nested-structures - (is (= {:a [1 2 {:b [3 "four"]} 5.5]} - (json/read-str "{\"a\":[1,2,{\"b\":[3,\"four\"]},5.5]}" - :key-fn keyword)))) - -(deftest read-nested-structures-stream - (is (= {:a [1 2 {:b [3 "four"]} 5.5]} - (json/read (java.io.StringReader. "{\"a\":[1,2,{\"b\":[3,\"four\"]},5.5]}") - :key-fn keyword)))) - -(deftest reads-long-string-correctly - (let [long-string (str/join "" (take 100 (cycle "abcde")))] - (is (= long-string (json/read-str (str "\"" long-string "\"")))))) - -(deftest disallows-non-string-keys - (is (thrown? Exception (json/read-str "{26:\"z\"")))) - -(deftest disallows-barewords - (is (thrown? Exception (json/read-str " foo ")))) - -(deftest disallows-unclosed-arrays - (is (thrown? Exception (json/read-str "[1, 2, ")))) - -(deftest disallows-unclosed-objects - (is (thrown? Exception (json/read-str "{\"a\":1, ")))) - -(deftest disallows-empty-entry-in-object - (is (thrown? Exception (json/read-str "{\"a\":1,}"))) - (is (thrown? Exception (json/read-str "{\"a\":1, }"))) - (is (thrown? Exception (json/read-str "{\"a\":1,,,,}"))) - (is (thrown? Exception (json/read-str "{\"a\":1,,\"b\":2}")))) - -(deftest get-string-keys - (is (= {"a" [1 2 {"b" [3 "four"]} 5.5]} - (json/read-str "{\"a\":[1,2,{\"b\":[3,\"four\"]},5.5]}")))) - -(deftest keywordize-keys - (is (= {:a [1 2 {:b [3 "four"]} 5.5]} - (json/read-str "{\"a\":[1,2,{\"b\":[3,\"four\"]},5.5]}" - :key-fn keyword)))) - -(deftest convert-values - (is (= {:number 42 :date (java.sql.Date. 55 6 12)} - (json/read-str "{\"number\": 42, \"date\": \"1955-07-12\"}" - :key-fn keyword - :value-fn (fn [k v] - (if (= :date k) - (java.sql.Date/valueOf ^String v) - v)))))) - -(deftest omit-values - (is (= {:number 42} - (json/read-str "{\"number\": 42, \"date\": \"1955-07-12\"}" - :key-fn keyword - :value-fn (fn thisfn [k v] - (if (= :date k) - thisfn - v))))) - (is (= "{\"c\":1,\"e\":2}" - (json/write-str (sorted-map :a nil, :b nil, :c 1, :d nil, :e 2, :f nil) - :value-fn (fn remove-nils [k v] - (if (nil? v) - remove-nils - v)))))) - -(declare pass1-string) - -(deftest pass1-test - (let [input (json/read-str pass1-string)] - (is (= "JSON Test Pattern pass1" (first input))) - (is (= "array with 1 element" (get-in input [1 "object with 1 member" 0]))) - (is (= 1234567890 (get-in input [8 "integer"]))) - (is (= "rosebud" (last input))))) - -; from http://www.json.org/JSON_checker/test/pass1.json -(def pass1-string - "[ - \"JSON Test Pattern pass1\", - {\"object with 1 member\":[\"array with 1 element\"]}, - {}, - [], - -42, - true, - false, - null, - { - \"integer\": 1234567890, - \"real\": -9876.543210, - \"e\": 0.123456789e-12, - \"E\": 1.234567890E+34, - \"\": 23456789012E66, - \"zero\": 0, - \"one\": 1, - \"space\": \" \", - \"quote\": \"\\\"\", - \"backslash\": \"\\\\\", - \"controls\": \"\\b\\f\\n\\r\\t\", - \"slash\": \"/ & \\/\", - \"alpha\": \"abcdefghijklmnopqrstuvwyz\", - \"ALPHA\": \"ABCDEFGHIJKLMNOPQRSTUVWYZ\", - \"digit\": \"0123456789\", - \"0123456789\": \"digit\", - \"special\": \"`1~!@#$%^&*()_+-={':[,]}|;.?\", - \"hex\": \"\\u0123\\u4567\\u89AB\\uCDEF\\uabcd\\uef4A\", - \"true\": true, - \"false\": false, - \"null\": null, - \"array\":[ ], - \"object\":{ }, - \"address\": \"50 St. James Street\", - \"url\": \"http://www.JSON.org/\", - \"comment\": \"// /* */\": \" \", - \" s p a c e d \" :[1,2 , 3 - -, - -4 , 5 , 6 ,7 ],\"compact\":[1,2,3,4,5,6,7], - \"jsontext\": \"{\\\"object with 1 member\\\":[\\\"array with 1 element\\\"]}\", - \"quotes\": \"" \\u0022 %22 0x22 034 "\", - \"\\/\\\\\\\"\\uCAFE\\uBABE\\uAB98\\uFCDE\\ubcda\\uef4A\\b\\f\\n\\r\\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?\" -: \"A key can be any string\" - }, - 0.5 ,98.6 -, -99.44 -, - -1066, -1e1, -0.1e1, -1e-1, -1e00,2e+00,2e-00 -,\"rosebud\"]") - - -(deftest print-json-strings - (is (= "\"Hello, World!\"" (json/write-str "Hello, World!"))) - (is (= "\"\\\"Embedded\\\" Quotes\"" (json/write-str "\"Embedded\" Quotes")))) - -(deftest print-unicode - (is (= "\"\\u1234\\u4567\"" (json/write-str "\u1234\u4567")))) - -(deftest print-nonescaped-unicode - (is (= "\"\\u0000\\t\\u001f \"" (json/write-str "\u0000\u0009\u001f\u0020" :escape-unicode true))) - (is (= "\"\\u0000\\t\\u001f \"" (json/write-str "\u0000\u0009\u001f\u0020" :escape-unicode false))) - (is (= "\"\u1234\u4567\"" (json/write-str "\u1234\u4567" :escape-unicode false)))) - -(deftest escape-special-separators - (is (= "\"\\u2028\\u2029\"" (json/write-str "\u2028\u2029" :escape-unicode false))) - (is (= "\"\u2028\u2029\"" (json/write-str "\u2028\u2029" :escape-js-separators false)))) - -(deftest print-json-null - (is (= "null" (json/write-str nil)))) - -(deftest print-ratios-as-doubles - (is (= "0.75" (json/write-str 3/4)))) - -(deftest print-bigints - (is (= "12345678901234567890" (json/write-str 12345678901234567890)))) - -(deftest print-uuids - (let [uid (java.util.UUID/randomUUID) - roundtripped (java.util.UUID/fromString (json/read-str (json/write-str uid)))] - (is (= uid roundtripped)))) - -(def ^java.text.SimpleDateFormat date-format - (doto (java.text.SimpleDateFormat. "dd-MM-yyyy hh:mm:ss") - (.setTimeZone (java.util.TimeZone/getDefault)))) - -(deftest print-util-date - (let [date (.parse date-format "24-03-2006 15:49:00") - epoch-millis (.getTime date)] - (is (= epoch-millis (-> date - json/write-str - json/read-str - java.time.Instant/parse - .toEpochMilli))))) - -(deftest print-sql-date - (let [date (.parse date-format "24-03-2006 15:49:00") - sql-date (java.sql.Date. (.getTime date)) - epoch-millis-start-of-day (.getTime (.getTime (doto (java.util.Calendar/getInstance) - (.setTime date) - (.set java.util.Calendar/HOUR_OF_DAY 0) - (.set java.util.Calendar/MINUTE 0) - (.set java.util.Calendar/SECOND 0) - (.set java.util.Calendar/MILLISECOND 0))))] - (is (= epoch-millis-start-of-day (-> sql-date - json/write-str - json/read-str - java.time.Instant/parse - .toEpochMilli))))) - -(deftest print-time - (let [time (java.time.Instant/parse "2006-03-24T15:49:00.000Z")] - (is (= time (java.time.Instant/parse (json/read-str (json/write-str time))))))) - - -(deftest print-time-supports-format - (let [formatter (.withZone java.time.format.DateTimeFormatter/ISO_ZONED_DATE_TIME - (java.time.ZoneId/systemDefault)) - date (.parse date-format "24-03-2006 15:49:00") - time (.toInstant (.atZone (java.time.LocalDateTime/parse - "2006-03-24T15:49:00.000Z" - formatter) - (java.time.ZoneId/systemDefault)))] - (is (= time (->> (json/write-str date :date-formatter formatter) - json/read-str - (.parse formatter) - (java.time.Instant/from)))))) - -(deftest error-on-NaN - (is (thrown? Exception (json/write-str Float/NaN))) - (is (thrown? Exception (json/write-str Double/NaN)))) - -(deftest error-on-infinity - (is (thrown? Exception (json/write-str Float/POSITIVE_INFINITY))) - (is (thrown? Exception (json/write-str Float/NEGATIVE_INFINITY))) - (is (thrown? Exception (json/write-str Double/POSITIVE_INFINITY))) - (is (thrown? Exception (json/write-str Double/NEGATIVE_INFINITY)))) - -(defn- double-value [_ v] - (if (and (instance? Double v) - (or (.isNaN ^Double v) - (.isInfinite ^Double v))) - (str v) - v)) - -(deftest special-handler-for-double-NaN - (is (= "{\"double\":\"NaN\"}" - (json/write-str {:double Double/NaN} - :value-fn double-value)))) - -(deftest special-handler-for-double-infinity - (is (= "{\"double\":\"Infinity\"}" - (json/write-str {:double Double/POSITIVE_INFINITY} - :value-fn double-value))) - (is (= "{\"double\":\"-Infinity\"}" - (json/write-str {:double Double/NEGATIVE_INFINITY} - :value-fn double-value)))) - -(deftest print-json-arrays - (is (= "[1,2,3]" (json/write-str [1 2 3]))) - (is (= "[1,2,3]" (json/write-str (list 1 2 3)))) - (is (= "[1,2,3]" (json/write-str (sorted-set 1 2 3)))) - (is (= "[1,2,3]" (json/write-str (seq [1 2 3]))))) - -(deftest print-java-arrays - (is (= "[1,2,3]" (json/write-str (into-array [1 2 3]))))) - -(deftest print-empty-arrays - (is (= "[]" (json/write-str []))) - (is (= "[]" (json/write-str (list)))) - (is (= "[]" (json/write-str #{})))) - -(deftest print-json-objects - (is (= "{\"a\":1,\"b\":2}" (json/write-str (sorted-map :a 1 :b 2))))) - -(deftest object-keys-must-be-strings - (is (= "{\"1\":1,\"2\":2}" (json/write-str (sorted-map 1 1 2 2))))) - -(deftest print-empty-objects - (is (= "{}" (json/write-str {})))) - -(deftest accept-sequence-of-nils - (is (= "[null,null,null]" (json/write-str [nil nil nil])))) - -(deftest error-on-nil-keys - (is (thrown? Exception (json/write-str {nil 1})))) - -(deftest characters-in-symbols-are-escaped - (is (= "\"foo\\u1b1b\"" (json/write-str (symbol "foo\u1b1b"))))) - -(deftest default-throws-on-eof - (is (thrown? java.io.EOFException (json/read-str "")))) - -(deftest throws-eof-in-unterminated-array - (is (thrown? java.io.EOFException - (json/read-str "[1, ")))) - -(deftest throws-eof-in-unterminated-string - (is (thrown? java.io.EOFException - (json/read-str "\"missing end quote")))) - -(deftest throws-eof-in-escaped-chars - (is (thrown? java.io.EOFException - (json/read-str "\"\\")))) - -(deftest throws-eof-in-arrays - (is (thrown? java.io.EOFException - (json/read-str "[1,"))) - (is (thrown? java.io.EOFException - (json/read-str "[1,2,")))) - -(deftest throws-eof-in-objects - (is (thrown? java.io.EOFException - (json/read-str "{"))) - (is (thrown? java.io.EOFException - (json/read-str "{\"\":1,")))) - -(deftest accept-eof - (is (= ::eof (json/read-str "" :eof-error? false :eof-value ::eof)))) - -(deftest characters-in-map-keys-are-escaped - (is (= "{\"\\\"\":42}" (json/write-str {"\"" 42})))) - -;;; Indent - -(deftest print-json-arrays-indent - (is (= "[\n 1,\n 2,\n 3\n]" (json/write-str [1 2 3] :indent true))) - (is (= "[\n 1,\n 2,\n 3\n]" (json/write-str (list 1 2 3) :indent true))) - (is (= "[\n 1,\n 2,\n 3\n]" (json/write-str (sorted-set 1 2 3) :indent true))) - (is (= "[\n 1,\n 2,\n 3\n]" (json/write-str (seq [1 2 3]) :indent true)))) - -(deftest print-java-arrays-indent - (is (= "[\n 1,\n 2,\n 3\n]" (json/write-str (into-array [1 2 3]) :indent true)))) - -(deftest print-empty-arrays-indent - (is (= "[]" (json/write-str [] :indent true))) - (is (= "[]" (json/write-str (list) :indent true))) - (is (= "[]" (json/write-str #{} :indent true)))) - -(deftest print-json-objects-indent - (is (= "{\n \"a\": 1,\n \"b\": 2\n}" (json/write-str (sorted-map :a 1 :b 2) :indent true)))) - -(deftest print-empty-objects-indent - (is (= "{}" (json/write-str {} :indent true)))) - -(deftest print-json-nested-indent - (is (= -"{ - \"a\": { - \"b\": [ - 1, - 2 - ], - \"c\": [], - \"d\": {} - } -}" (json/write-str {:a (sorted-map :b [1 2] :c [] :d {})} :indent true)))) - - -;;; Pretty-printer - -(deftest pretty-printing - (let [x (json/read-str pass1-string)] - (is (= x (json/read-str (with-out-str (json/pprint x))))))) - -(deftest pretty-print-nonescaped-unicode - (is (= "\"\u1234\u4567\"\n" - (with-out-str - (json/pprint "\u1234\u4567" :escape-unicode false))))) - -(defn benchmark [] - (dotimes [_ 8] - (time - (dotimes [_ 1000] - (assert (= (json/read-str pass1-string) - (json/read-str (json/write-str (json/read-str pass1-string))))))))) - -(defn djson-54-default-write-fn [x out options] - (#'json/write-string (str x) out options)) - -(deftest DJSON-54-test - (is (thrown? Exception (json/write-str {:foo (java.net.URI. "http://clojure.org")}))) - (try (json/write-str {:foo (java.net.URI. "http://clojure.org")}) - (catch Exception e - (is (= "Don't know how to write JSON of class java.net.URI" (.getMessage e))))) - (is (= "{\"foo\":\"http:\\/\\/clojure.org\"}" (json/write-str {:foo (java.net.URI. "http://clojure.org")} :default-write-fn djson-54-default-write-fn)))) diff --git a/src/test/clojure/clojure/data/json_test_suite_test.clj b/src/test/clojure/clojure/data/json_test_suite_test.clj deleted file mode 100644 index c0b714c..0000000 --- a/src/test/clojure/clojure/data/json_test_suite_test.clj +++ /dev/null @@ -1,393 +0,0 @@ -(ns clojure.data.json-test-suite-test - (:require [clojure.data.json :as json] - [clojure.test :refer :all] - [clojure.string :as str])) - -(deftest i-number-double-huge-neg-exp-test - (is (= [0.0] (json/read-str "[123.456e-789]")))) - -(deftest i-number-huge-exp-test - (is (= [##Inf] - (json/read-str "[0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006]")))) - -(deftest i-number-neg-int-huge-exp-test - (is (= [##-Inf] (json/read-str "[-1e+9999]")))) - -(deftest i-number-pos-double-huge-exp-test - (is (= [##Inf] (json/read-str "[1.5e+9999]")))) - -(deftest i-number-real-neg-overflow-test - (is (= [##-Inf] (json/read-str "[-123123e100000]")))) - -(deftest i-number-real-pos-overflow-test - (is (= [##Inf] (json/read-str "[123123e100000]")))) - -(deftest i-number-real-underflow-test - (is (= [0.0] (json/read-str "[123e-10000000]")))) - -(deftest i-number-too-big-neg-int-test - (is (= [-123123123123123123123123123123N] - (json/read-str "[-123123123123123123123123123123]")))) - -(deftest i-number-too-big-pos-int-test - (is (= [100000000000000000000N] (json/read-str "[100000000000000000000]")))) - -(deftest i-number-very-big-negative-int-test - (is (= [-237462374673276894279832749832423479823246327846N] - (json/read-str "[-237462374673276894279832749832423479823246327846]")))) - -(deftest n-array-1-true-without-comma-test - (is (thrown? Exception (json/read-str "[1 true]")))) - -(deftest n-array-colon-instead-of-comma-test - (is (thrown? Exception (json/read-str "[\"\": 1]")))) - -(deftest n-array-comma-and-number-test - (is (thrown? Exception (json/read-str "[,1]")))) - -(deftest n-array-double-comma-test - (is (thrown? Exception (json/read-str "[1,,2]")))) - -(deftest n-array-double-extra-comma-test - (is (thrown? Exception (json/read-str "[\"x\",,]")))) - -(deftest n-array-extra-comma-test - (is (thrown? Exception (json/read-str "[\"\",]")))) - -(deftest n-array-incomplete-invalid-value-test - (is (thrown? Exception (json/read-str "[x")))) - -(deftest n-array-incomplete-test - (is (thrown? Exception (json/read-str "[\"x\"")))) - -(deftest n-array-inner-array-no-comma-test - (is (thrown? Exception (json/read-str "[3[4]]")))) - -(deftest n-array-items-separated-by-semicolon-test - (is (thrown? Exception (json/read-str "[1:2]")))) - -(deftest n-array-just-comma-test - (is (thrown? Exception (json/read-str "[,]")))) - -(deftest n-array-just-minus-test - (is (thrown? Exception (json/read-str "[-]")))) - -(deftest n-array-missing-value-test - (is (thrown? Exception (json/read-str "[ , \"\"]")))) - -(deftest n-array-newlines-unclosed-test - (is (thrown? Exception (json/read-str "[\"a\",\n4\n,1,")))) - -(deftest n-array-number-and-comma-test - (is (thrown? Exception (json/read-str "[1,]")))) - -(deftest n-array-number-and-several-commas-test - (is (thrown? Exception (json/read-str "[1,,]")))) - -(deftest n-array-spaces-vertical-tab-formfeed-test - (is (thrown? Exception (json/read-str "[\" a\"\\f]")))) - -(deftest n-array-star-inside-test - (is (thrown? Exception (json/read-str "[*]")))) - -(deftest n-array-unclosed-test - (is (thrown? Exception (json/read-str "[\"\"")))) - -(deftest n-array-unclosed-trailing-comma-test - (is (thrown? Exception (json/read-str "[1,")))) - -(deftest n-array-unclosed-with-new-lines-test - (is (thrown? Exception (json/read-str "[1,\n1\n,1")))) - -(deftest n-array-unclosed-with-object-inside-test - (is (thrown? Exception (json/read-str "[{}")))) - -(deftest n-number-++-test - (is (thrown? Exception (json/read-str "[++1234]")))) - -(deftest n-number-+1-test - (is (thrown? Exception (json/read-str "[+1]")))) - -(deftest n-number-+Inf-test - (is (thrown? Exception (json/read-str "[+Inf]")))) - -(deftest n-number--01-test - (is (thrown? Exception (json/read-str "[-01]")))) - -(deftest n-number--1.0.-test - (is (thrown? Exception (json/read-str "[-1.0.]")))) - -(deftest n-number--2.-test - (is (thrown? Exception (json/read-str "[-2.]")))) - -(deftest n-number--NaN-test - (is (thrown? Exception (json/read-str "[-NaN]")))) - -(deftest n-number-.-1-test - (is (thrown? Exception (json/read-str "[.-1]")))) - -(deftest n-number-.2e-3-test - (is (thrown? Exception (json/read-str "[.2e-3]")))) - -(deftest n-number-0-capital-E+-test - (is (thrown? Exception (json/read-str "[0E+]")))) - -(deftest n-number-0-capital-E-test - (is (thrown? Exception (json/read-str "[0E]")))) - -(deftest n-number-0.1.2-test - (is (thrown? Exception (json/read-str "[0.1.2]")))) - -(deftest n-number-0.3e+-test - (is (thrown? Exception (json/read-str "[0.3e+]")))) - -(deftest n-number-0.3e-test - (is (thrown? Exception (json/read-str "[0.3e]")))) - -(deftest n-number-0.e1-test - (is (thrown? Exception (json/read-str "[0.e1]")))) - -(deftest n-number-0e+-test - (is (thrown? Exception (json/read-str "[0e+]")))) - -(deftest n-number-0e-test - (is (thrown? Exception (json/read-str "[0e]")))) - -(deftest n-number-1-000-test - (is (thrown? Exception (json/read-str "[1 000.0]")))) - -(deftest n-number-1.0e+-test - (is (thrown? Exception (json/read-str "[1.0e+]")))) - -(deftest n-number-1.0e--test - (is (thrown? Exception (json/read-str "[1.0e-]")))) - -(deftest n-number-1.0e-test - (is (thrown? Exception (json/read-str "[1.0e]")))) - -(deftest n-number-1eE2-test - (is (thrown? Exception (json/read-str "[1eE2]")))) - -(deftest n-number-2.e+3-test - (is (thrown? Exception (json/read-str "[2.e+3]")))) - -(deftest n-number-2.e-3-test - (is (thrown? Exception (json/read-str "[2.e-3]")))) - -(deftest n-number-2.e3-test - (is (thrown? Exception (json/read-str "[2.e3]")))) - -(deftest n-number-9.e+-test - (is (thrown? Exception (json/read-str "[9.e+]")))) - -(deftest n-number-Inf-test - (is (thrown? Exception (json/read-str "[Inf]")))) - -(deftest n-number-NaN-test - (is (thrown? Exception (json/read-str "[NaN]")))) - -(deftest n-number-expression-test - (is (thrown? Exception (json/read-str "[1+2]")))) - -(deftest n-number-hex-1-digit-test - (is (thrown? Exception (json/read-str "[0x1]")))) - -(deftest n-number-hex-2-digits-test - (is (thrown? Exception (json/read-str "[0x42]")))) - -(deftest n-number-infinity-test - (is (thrown? Exception (json/read-str "[Infinity]")))) - -(deftest n-number-invalid+--test - (is (thrown? Exception (json/read-str "[0e+-1]")))) - -(deftest n-number-invalid-negative-real-test - (is (thrown? Exception (json/read-str "[-123.123foo]")))) - -(deftest n-number-minus-infinity-test - (is (thrown? Exception (json/read-str "[-Infinity]")))) - -(deftest n-number-minus-sign-with-trailing-garbage-test - (is (thrown? Exception (json/read-str "[-foo]")))) - -(deftest n-number-minus-space-1-test - (is (thrown? Exception (json/read-str "[- 1]")))) - -(deftest n-number-neg-int-starting-with-zero-test - (is (thrown? Exception (json/read-str "[-012]")))) - -(deftest n-number-neg-real-without-int-part-test - (is (thrown? Exception (json/read-str "[-.123]")))) - -(deftest n-number-neg-with-garbage-at-end-test - (is (thrown? Exception (json/read-str "[-1x]")))) - -(deftest n-number-real-garbage-after-e-test - (is (thrown? Exception (json/read-str "[1ea]")))) - -(deftest n-number-real-without-fractional-part-test - (is (thrown? Exception (json/read-str "[1.]")))) - -(deftest n-number-starting-with-dot-test - (is (thrown? Exception (json/read-str "[.123]")))) - -(deftest n-number-with-alpha-char-test - (is (thrown? Exception (json/read-str "[1.8011670033376514H-308]")))) - -(deftest n-number-with-alpha-test - (is (thrown? Exception (json/read-str "[1.2a-3]")))) - -(deftest n-number-with-leading-zero-test - (is (thrown? Exception (json/read-str "[012]")))) - -(deftest n-object-non-string-key-but-huge-number-instead-test - (is (thrown? Exception (json/read-str "{9999E9999:1}")))) - -(deftest n-structure-array-with-unclosed-string-test - (is (thrown? Exception (json/read-str "[\"asd]")))) - -(deftest n-structure-end-array-test - (is (thrown? Exception (json/read-str "]")))) - -(deftest n-structure-number-with-trailing-garbage-test - (is (thrown? Exception (json/read-str "2@")))) - -(deftest n-structure-open-array-apostrophe-test - (is (thrown? Exception (json/read-str "['")))) - -(deftest n-structure-open-array-comma-test - (is (thrown? Exception (json/read-str "[,")))) - -(deftest n-structure-open-array-open-object-test - (is (thrown? Exception (json/read-str "[{")))) - -(deftest n-structure-open-array-open-string-test - (is (thrown? Exception (json/read-str "[\"a")))) - -(deftest n-structure-open-array-string-test - (is (thrown? Exception (json/read-str "[\"a\"")))) - -(deftest n-structure-open-object-close-array-test - (is (thrown? Exception (json/read-str "{]")))) - -(deftest n-structure-open-object-open-array-test - (is (thrown? Exception (json/read-str "{[")))) - -(deftest n-structure-unclosed-array-partial-null-test - (is (thrown? Exception (json/read-str "[ false, nul")))) - -(deftest n-structure-unclosed-array-test - (is (thrown? Exception (json/read-str "[1")))) - -(deftest n-structure-unclosed-array-unfinished-false-test - (is (thrown? Exception (json/read-str "[ true, fals")))) - -(deftest n-structure-unclosed-array-unfinished-true-test - (is (thrown? Exception (json/read-str "[ false, tru")))) - -(deftest y-array-arraysWithSpaces-test - (is (= [[]] (json/read-str "[[] ]")))) - -(deftest y-array-empty-string-test - (is (= [""] (json/read-str "[\"\"]")))) - -(deftest y-array-empty-test - (is (= [] (json/read-str "[]")))) - -(deftest y-array-ending-with-newline-test - (is (= ["a"] (json/read-str "[\"a\"]")))) - -(deftest y-array-false-test - (is (= [false] (json/read-str "[false]")))) - -(deftest y-array-heterogeneous-test - (is (= [nil 1 "1" {}] (json/read-str "[null, 1, \"1\", {}]")))) - -(deftest y-array-null-test - (is (= [nil] (json/read-str "[null]")))) - -(deftest y-array-with-1-and-newline-test - (is (= [1] (json/read-str "[1\n]")))) - -(deftest y-array-with-leading-space-test - (is (= [1] (json/read-str " [1]")))) - -(deftest y-array-with-several-null-test - (is (= [1 nil nil nil 2] (json/read-str "[1,null,null,null,2]")))) - -(deftest y-array-with-trailing-space-test - (is (= [2] (json/read-str "[2] ")))) - -(deftest y-number-0e+1-test - (is (= [0.0] (json/read-str "[0e+1]")))) - -(deftest y-number-0e1-test - (is (= [0.0] (json/read-str "[0e1]")))) - -(deftest y-number-after-space-test - (is (= [4] (json/read-str "[ 4]")))) - -(deftest y-number-double-close-to-zero-test - (is (= [-1.0E-78] - (json/read-str "[-0.000000000000000000000000000000000000000000000000000000000000000000000000000001]")))) - -(deftest y-number-int-with-exp-test - (is (= [200.0] (json/read-str "[20e1]")))) - -(deftest y-number-minus-zero-test - (is (= [0] (json/read-str "[-0]")))) - -(deftest y-number-negative-int-test - (is (= [-123] (json/read-str "[-123]")))) - -(deftest y-number-negative-one-test - (is (= [-1] (json/read-str "[-1]")))) - -(deftest y-number-negative-zero-test - (is (= [0] (json/read-str "[-0]")))) - -(deftest y-number-real-capital-e-neg-exp-test - (is (= [0.01] (json/read-str "[1E-2]")))) - -(deftest y-number-real-capital-e-pos-exp-test - (is (= [100.0] (json/read-str "[1E+2]")))) - -(deftest y-number-real-capital-e-test - (is (= [1.0E22] (json/read-str "[1E22]")))) - -(deftest y-number-real-exponent-test - (is (= [1.23E47] (json/read-str "[123e45]")))) - -(deftest y-number-real-fraction-exponent-test - (is (= [1.23456E80] (json/read-str "[123.456e78]")))) - -(deftest y-number-real-neg-exp-test - (is (= [0.01] (json/read-str "[1e-2]")))) - -(deftest y-number-real-pos-exponent-test - (is (= [100.0] (json/read-str "[1e+2]")))) - -(deftest y-number-simple-int-test - (is (= [123] (json/read-str "[123]")))) - -(deftest y-number-simple-real-test - (is (= [123.456789] (json/read-str "[123.456789]")))) - -(deftest y-number-test - (is (= [1.23E67] (json/read-str "[123e65]")))) - -(deftest y-object-extreme-numbers-test - (is (= {"min" -1.0E28, "max" 1.0E28} - (json/read-str "{\"min\": -1.0e+28, \"max\": 1.0e+28}")))) - -(deftest y-string-in-array-test - (is (= ["asd"] (json/read-str "[\"asd\"]")))) - -(deftest y-string-in-array-with-leading-space-test - (is (= ["asd"] (json/read-str "[ \"asd\"]")))) - -(deftest y-structure-true-in-array-test - (is (= [true] (json/read-str "[true]")))) - -(deftest y-structure-whitespace-array-test - (is (= [] (json/read-str " [] ")))) diff --git a/static/clojure-icon.gif b/static/clojure-icon.gif new file mode 100644 index 0000000..84eee16 Binary files /dev/null and b/static/clojure-icon.gif differ diff --git a/static/clojure.css b/static/clojure.css new file mode 100644 index 0000000..d40ea35 --- /dev/null +++ b/static/clojure.css @@ -0,0 +1,53 @@ + +body {margin: 0;padding: 0;background-color: #e3e3e3;border-top: 4px solid #b3ccfe;color: #272727} +body, .wiki, #Content, .wikipage {font-family: "Lucida Grande","Trebuchet MS","Bitstream Vera Sans",Verdana,Helvetica,sans-serif;font-size: 12px;line-height: 18px;} +#leftcolumn .wiki_link, #toc, #toc a, .toc-header {font-size: 11px;line-height: 18px;text-decoration: none} +img {border: 0;} +#AllContentContainer {max-width: 96em;min-width: 663px;background: #fff url(space/content-background.gif) right repeat-y;padding: 0 40px 18px 0;} + +#Header {position: relative;clear: both;overflow: auto;height: 110px} +#Logo {position: absolute;top: 0;left: 0;padding: 10px 0 0 62px;width: 138px;height: 100px} +#Header h1 {float: left;border: 0;margin: 0;padding: 0;position: absolute;top: 50;left: 200px; height: 60px} +#Header h1 a:link, #Header h1 a:visited, #Header h1 a:hover {color:#000000; text-decoration: none;} +#Resources {min-height: 110px;width: 234px;padding: 5px 0;float: right;border-bottom: 1px solid #abc4e2;background: #e4eaf7 url(space/resources-background.gif) repeat-y;overflow: auto;} +#Resources ul {margin: 0;padding: 0 25px;list-style: none;} +#ResourcesB {float: right;} +#Resources a {text-decoration: none;} +#Resources a:link, #Resources a:visited, #Resources a:hover, #Resources a:active {color: #4c5770;} +#Resources a:hover {text-decoration: underline;} + +#leftcolumn {margin: 0 0 0 22px;float: left;width: 168px;padding-bottom: 18px;background: #c5d2eb url(space/left-nav-bottom.gif) bottom no-repeat;} + +#leftcolumn ul {list-style: none;margin: 0;padding: 0;} + +#leftcolumn a, #leftcolumn .toc-header {font-weight: bold;display: block;background: transparent url(space/left-nav-divider.gif) repeat-x;padding: 6px 0 0 17px;margin: 12px 0 0 0;} +#leftcolumn li a {font-weight: normal;background:none;margin: 0;padding: 0 0 0 17px;} +#leftcolumn br {display: none;} +#leftcolumn .menu {margin-top: 14px;background: #fff url(space/left-nav-background.gif) repeat-y;} + +#leftcolumn a:link , #leftcolumn a:visited , #leftcolumn a:active {color: #666;} +#leftcolumn a:hover {text-decoration: underline;color: #222;} + +#rightcolumn {margin-left: 220px;} + +.wiki #toc {border: none;margin: 0 0 30px 18px;width: 222px;padding: 0 0 17px 12px;background: transparent url(space/toc-background.gif) repeat-y;border-bottom: 1px solid #d6d6d6;} +.wiki #toc h1, .wiki #toc div {margin: 0;padding: 0;} +.wiki #toc h1 {font-size: 14px;line-height: 18px;font-family: Georgia, "Times New Roman", Times, serif;font-style: italic;font-weight: normal;color: #969696;padding: 10px 0 8px 11px;} +.wiki #toc a:link, .wiki #toc a:visited, .wiki #toc a:active {color: #646464;} +.wiki #toc a:hover {background: none;color: #333333;} + +.wiki pre {font-family: Inconsolata, Monaco, Consolas, "Lucida Console", "Courier New", Courier, monospace;background-color: transparent;border: 0px;color: #000000} +#DesignedBy { clear: both; text-align: right; margin-top: 18px;} +#DesignedBy, #DesignedBy a, #DesignedBy a:link, #DesignedBy a:visited, #DesignedBy a:hover, #DesignedBy a:active { color: #999; } + +#WikiHeaderNavContainer { height: 36px; position: relative; } +#leftcolumn .WikiActions a {display: inline;} + +.comment { color: gray; } +.string { color: teal; } +.function { color: #00c; } +.macro, .specialops { color: #60c; } +.parens { color: #000; } +.keyword { color: #c09; } +.brackets { color: #006; } +.curlybrackets { color: #906; } diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..b1653e8 Binary files /dev/null and b/static/favicon.png differ diff --git a/static/internal.css b/static/internal.css new file mode 100644 index 0000000..08ce7fb --- /dev/null +++ b/static/internal.css @@ -0,0 +1,18 @@ +/* *** MISC STUFF USED ALL OVER *** */ +.nowrap { white-space: nowrap; } +.hidden { display: none; } +tr td .sm { font-size: 90%; } +.grey { color: #666; } +.smgrey { color: #666; font-size: 80%; } +.grey a { color: #666; } +.textentry { font-family: arial, helvetica, sans-serif; border: 1px solid #999; } +.nopad { padding: 0; margin: 0; } +.bblack { color: #000; font-size: 1.1em; font-weight: bold; } +.bblacklight { color: #000; font-size: 1.1em; } + +/* IE6 min-height: http://www.dustindiaz.com/min-height-fast-hack */ +#content_view { display: block; padding-bottom: 2em; width: 100%; min-height: 600px; height: auto !important; height: 600px; } + +/* Used with .innerContentBox and #WikiAds to position the ad column */ +.contentBox { position: relative; min-height: 600px; height: auto !important; height: 600px; } + diff --git a/static/space/content-background.gif b/static/space/content-background.gif new file mode 100644 index 0000000..0786c72 Binary files /dev/null and b/static/space/content-background.gif differ diff --git a/static/space/left-nav-background.gif b/static/space/left-nav-background.gif new file mode 100644 index 0000000..e6e5904 Binary files /dev/null and b/static/space/left-nav-background.gif differ diff --git a/static/space/left-nav-bottom.gif b/static/space/left-nav-bottom.gif new file mode 100644 index 0000000..061c089 Binary files /dev/null and b/static/space/left-nav-bottom.gif differ diff --git a/static/space/left-nav-divider.gif b/static/space/left-nav-divider.gif new file mode 100644 index 0000000..1854e56 Binary files /dev/null and b/static/space/left-nav-divider.gif differ diff --git a/static/space/resources-background.gif b/static/space/resources-background.gif new file mode 100644 index 0000000..9657769 Binary files /dev/null and b/static/space/resources-background.gif differ diff --git a/static/space/toc-background.gif b/static/space/toc-background.gif new file mode 100644 index 0000000..0b7c95b Binary files /dev/null and b/static/space/toc-background.gif differ diff --git a/static/wiki.css b/static/wiki.css new file mode 100644 index 0000000..1cb1bdd --- /dev/null +++ b/static/wiki.css @@ -0,0 +1,22 @@ +/* Wiki Rendered Styles */ +.wiki { line-height: 150%; font-family: arial, helvetica, sans-serif; font-size: small; } +.wiki h1 { font-weight: bold; padding: 5px 0 0 0; margin: 0; font-size: 1.4em; } +.wiki h2 { font-weight: bold; padding: 5px 0 0 0; margin: 0; font-size: 1.3em; } +.wiki h3 { font-weight: bold; padding: 5px 0 0 0; margin: 0; font-size: 1.1em; } +.wiki h4 { font-weight: normal; padding: 5px 0 0 0; margin: 0; font-size: 1.066em; } +.wiki h5 { font-weight: normal; padding: 5px 0 0 0; margin: 0; font-size: 1.033em; } +.wiki h6 { font-weight: normal; padding: 5px 0 0 0; margin: 0; font-size: 1.0em; } +.wiki table { border-collapse: collapse; margin: 10px 0; font-size: small; } +.wiki p { margin: 0; padding: 0; padding: 5px 0; } +.wiki td { border: 1px solid #DDD; } +.wiki #toc { border: 1px solid #AAA; background: #fff; padding: 5px; margin: 0 0 10px 10px; width: 25%; float: right; clear: right;} +.wiki #toc h1 { font-weight: normal; font-size: 1.2em; padding: 0; } +.wiki #toc a:hover { color: #00D; background: #FFD; } + +.wiki hr { height: 1px; color: #AAA; background-color: #AAA; border: 0; margin: 0 10px; } +.wiki ul { padding: .5em 0 0 3em; margin: 0; } +.wiki ol { padding: .5em 0 0 3em; margin: 0; } +.wiki ul.quotelist { list-style: none; } +.wiki tt { font-size: small; } +.wiki img { border: 0; padding: 4px; } +