{"id":19380728,"url":"https://github.com/panpf/jsonx","last_synced_at":"2025-04-23T19:33:50.855Z","repository":{"id":57734435,"uuid":"183879658","full_name":"panpf/jsonx","owner":"panpf","description":"Extensions to the org.json standard library","archived":true,"fork":false,"pushed_at":"2021-05-22T10:15:08.000Z","size":141,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-24T16:52:38.805Z","etag":null,"topics":["java","json","kotlin"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/panpf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-28T08:28:57.000Z","updated_at":"2024-11-08T15:22:18.000Z","dependencies_parsed_at":"2022-08-24T01:11:04.493Z","dependency_job_id":null,"html_url":"https://github.com/panpf/jsonx","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panpf%2Fjsonx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panpf%2Fjsonx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panpf%2Fjsonx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panpf%2Fjsonx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/panpf","download_url":"https://codeload.github.com/panpf/jsonx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250499942,"owners_count":21440719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","json","kotlin"],"created_at":"2024-11-10T09:14:39.201Z","updated_at":"2025-04-23T19:33:50.520Z","avatar_url":"https://github.com/panpf.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JSONX\n\n[![Platform][platform_java_icon]][platform_java_link]\n[![Platform][platform_kotlin_icon]][platform_kotlin_link]\n![SourceCompatibility][source_compatibility_icon]\n![TargetCompatibility][target_compatibility_icon]\n![KotlinJvmTarget][kotlin_jvmtarget_icon]\n[![License][license_icon]][license_link]\n\nExtensions to the org.json standard library\n\n## Getting Started\n\nThis library has been published to `mavenCentral`, Add the following to your `build.gradle` file\n```grovvy\nimplementation \"io.github.panpf.jsonx:jsonx:${lastVersion}\"\nimplementation \"io.github.panpf.jsonx:jsonx-ktx:${lastVersion}\" // Not required. Kotlin extension\nimplementation \"io.json:org.json:2.0\"  // Not required. You need it if you are running on the java platform\n```\n\n`${lastVersion}`: [![Download][release_icon]][release_link] (no include 'v')\n\nDependencies：\n* org.jetbrains:annotations: 13.0\n* org.jetbrains.kotlin:kotlin-stdlib-jdk7: 1.4.10（Only the '\\*-ktx' library dependencies it）\n\n## Samples\n\n### Empty judgment：\n```java\nassertTrue(Jsonx.isEmptyJSON(null));\nassertTrue(Jsonx.isEmptyJSON(\"\"));\nassertTrue(Jsonx.isEmptyJSON(\"null\"));\nassertTrue(Jsonx.isEmptyJSON(\"{}\"));\nassertTrue(Jsonx.isEmptyJSON(\"[]\"));\n\nassertFalse(Jsonx.isEmptyJSON(\"{\\\"key\\\":\\\"value\\\"}\"));\n```\n\n### conversion：\n```\nassertEquals(\"[\\\"1\\\",\\\"2\\\",\\\"3\\\"]\", Jsonx.toJSONArray(new String[]{\"1\", \"2\", \"3\"}).toString());\nassertArrayEquals(new String[]{\"1\", \"2\", \"3\"}, Jsonx.toStringArray(new JSONArray(\"[\\\"1\\\",\\\"2\\\",\\\"3\\\"]\")));\n```\n\n### get/opt method multiple key support：\n```\nJSONObject jsonObject = new JSONObject();\njsonObject.put(\"nick\", \"Tony\");\nassertEquals(\"Tony\", Jsonx.getWithKeys(jsonObject, new String[]{\"nick\", \"name\"}).toString());\n\nJSONObject jsonObject2 = new JSONObject();\njsonObject2.put(\"name\", \"Tony\");\nassertEquals(\"Tony\", Jsonx.getWithKeys(jsonObject2, new String[]{\"nick\", \"name\"}).toString());\n```\n\n### format：\n```java\nString formatted = Jsonx.formatJSON(\"{\\\"age\\\":20,\\\"name\\\":\\\"David\\\"}\")\nSystem.out.println(formatted)\n```\nout:\n```\n{\n    \"age\":20,\n    \"name\":\"David\"\n}\n```\n\n### JSONArray Sequence support in kotlin\n```kotlin\nval jsonArray = JSONArray(\"[1, 2, 3, 4]\")\njsonArray.asSequence().forEach{\n    println(\"item: $it\")\n}\n```\n\n### Method List\n\ncheck:\n* boolean isJSON(String)\n* boolean isNotJSON(String)\n* boolean isJSONObject(String)\n* boolean isNotJSONObject(String)\n* boolean isJSONArray(String)\n* boolean isNotJSONArray(String)\n* boolean isEmptyJSON(String)\n* boolean isNotEmptyJSON(String)\n* boolean isEmptyJSONObject(String)\n* boolean isNotEmptyJSONObject(String)\n* boolean isEmptyJSONArray(String)\n* boolean isNotEmptyJSONArray(String)\n\ntoJsonObject:\n* JSONObject toJSONObject(String)\n* JSONObject toJSONObjectOrNull(String)\n* \u003cT\u003e JSONObject toJSONObject(T, ToJSONObject\u003cT\u003e)\n* \u003cT\u003e JSONObject toJSONObjectOrNull(T, ToJSONObjectOrNull\u003cT\u003e)\n\ntoJsonArray:\n* JSONArray toJSONArray(String)\n* JSONArray toJSONArrayOrNull(String)\n* \u003cT\u003e JSONArray toJSONArray(List\u003cT\u003e, ToJSONObject\u003cT\u003e)\n* \u003cT\u003e JSONArray toJSONArrayOrNull(List\u003cT\u003e, ToJSONObjectOrNull\u003cT\u003e)\n* \u003cT\u003e JSONArray toJSONArray(List\u003cT\u003e)\n* \u003cT\u003e JSONArray toJSONArrayOrNull(List\u003cT\u003e)\n* \u003cT\u003e JSONArray toJSONArray(T[] array, ToJSONObject\u003cT\u003e)\n* \u003cT\u003e JSONArray toJSONArrayOrNull(T[] array, ToJSONObjectOrNull\u003cT\u003e)\n* \u003cT\u003e JSONArray toJSONArray(T[])\n* \u003cT\u003e JSONArray toJSONArrayOrNull(T[])\n* JSONArray toJSONArray(int[]) \n* JSONArray toJSONArrayOrNull(int[])\n* JSONArray toJSONArray(double[]) \n* JSONArray toJSONArrayOrNull(double[])\n* JSONArray toJSONArray(long[])\n* JSONArray toJSONArrayOrNull(long[])\n* JSONArray toJSONArray(boolean[])\n* JSONArray toJSONArrayOrNull(boolean[])\n\ntoBean:\n* \u003cBean\u003e Bean toBean(JSONObject, ToBean\u003cBean\u003e)\n* \u003cBean\u003e ArrayList\u003cBean\u003e toBeanList(JSONArray, ToBean\u003cBean\u003e)\n* \u003cBean\u003e ArrayList\u003cBean\u003e toBeanListOrNull(JSONArray, ToBeanOrNull\u003cBean\u003e)\n* \u003cBean\u003e Bean[] toBeanArray(JSONArray, ToBean\u003cBean\u003e)\n* \u003cBean\u003e Bean[] toBeanArrayOrNull(JSONArray, ToBeanOrNull\u003cBean\u003e)\n* String[] toStringArray(JSONArray)\n* String[] toStringArrayOrNull(JSONArray)\n* ArrayList\u003cString\u003e toStringList(JSONArray)\n* ArrayList\u003cString\u003e toStringListOrNull(JSONArray)\n* int[] toIntArray(JSONArray)\n* int[] toIntArrayOrNull(JSONArray)\n* double[] toDoubleArray(JSONArray)\n* double[] toDoubleArrayOrNull(JSONArray)\n* long[] toLongArray(JSONArray)\n* long[] toLongArrayOrNull(JSONArray)\n* boolean[] toBooleanArray(JSONArray)\n* boolean[] toBooleanArrayOrNull(JSONArray)\n\nopt and get:\n* Object optWithKeys(JSONObject, String[])\n* String optStringWithKeys(JSONObject, String[], String)\n* String optStringWithKeys(JSONObject, String[])\n* int optIntWithKeys(JSONObject, String[], int)\n* int optIntWithKeys(JSONObject, String[])\n* long optLongWithKeys(JSONObject, String[], long)\n* long optLongWithKeys(JSONObject, String[])\n* boolean optBooleanWithKeys(JSONObject, String[], boolean)\n* boolean optBooleanWithKeys(JSONObject, String[])\n* double optDoubleWithKeys(JSONObject, String[], double)\n* double optDoubleWithKeys(JSONObject, String[])\n* JSONObject optJSONObjectWithKeys(JSONObject, String[])\n* JSONArray optJSONArrayWithKeys(JSONObject, String[])\n* Object getWithKeys(JSONObject, String[])\n* String getStringWithKeys(JSONObject, String[])\n* int getIntWithKeys(JSONObject, String[])\n* long getLongWithKeys(JSONObject, String[])\n* boolean getBooleanWithKeys(JSONObject, String[])\n* double getDoubleWithKeys(JSONObject, String[])\n* JSONObject getJSONObjectWithKeys(JSONObject, String[]) \n* JSONArray getJSONArrayWithKeys(JSONObject, String[])\n\nformat:\n* String formatToString(JSONObject)\n* String formatToStringOrNull(JSONObject)\n* String formatToString(JSONArray)\n* String formatToStringOrNull(JSONArray)\n* String formatJSON(String json)\n* String formatJSONOrNull(String json)\n\nMore features please refer to the source code [Jsonx.java] ([Test][JsonxTest.java])、[Jsonx.kt] ([Test][JsonxTest.kt])\n\n## Change Log\n\nPlease view the [CHANGELOG.md] file\n\n## License\n    Copyright (C) 2019 Peng fei Pan \u003cpanpfpanpf@outlook.com\u003e\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n\n[platform_java_icon]: https://img.shields.io/badge/Platform-Java-red.svg\n[platform_java_link]: https://www.java.com\n[platform_kotlin_icon]: https://img.shields.io/badge/Platform-Kotlin-blue.svg\n[platform_kotlin_link]: http://kotlinlang.org\n[source_compatibility_icon]: https://img.shields.io/badge/SourceCompatibility-1.7-red.svg\n[target_compatibility_icon]: https://img.shields.io/badge/TargetCompatibility-1.7-red.svg\n[kotlin_jvmtarget_icon]: https://img.shields.io/badge/KotlinJvmTarget-1.6-red.svg\n[license_icon]: https://img.shields.io/badge/License-Apache%202-blue.svg\n[license_link]: https://www.apache.org/licenses/LICENSE-2.0\n\n[release_icon]: https://img.shields.io/maven-central/v/io.github.panpf.jsonx/jsonx\n[release_link]: https://repo1.maven.org/maven2/io/github/panpf/jsonx/\n\n[Jsonx.java]: jsonx/src/main/java/com/github/panpf/jsonx/Jsonx.java\n[JsonxTest.java]: jsonx/src/test/java/com/github/panpf/jsonx/test/JsonxTest.java\n[Jsonx.kt]: jsonx-ktx/src/main/java/com/github/panpf/jsonx/Jsonx.kt\n[JsonxTest.kt]: jsonx-ktx/src/test/java/com/github/panpf/jsonx/test/JsonxTest.kt\n\n[CHANGELOG.md]: CHANGELOG.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanpf%2Fjsonx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanpf%2Fjsonx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanpf%2Fjsonx/lists"}