From c5b9b6c708c8344fc71a423eef581a5012b42c0d Mon Sep 17 00:00:00 2001 From: rikkarth Date: Tue, 6 Aug 2024 14:57:52 +0100 Subject: [PATCH 1/9] initial implementation --- src/main/java/org/json/JSONObject.java | 1560 +++++++---------- .../junit/JSONParserConfigurationTest.java | 50 +- src/test/resources/Issue884-validJsonObj.json | 14 + 3 files changed, 706 insertions(+), 918 deletions(-) create mode 100644 src/test/resources/Issue884-validJsonObj.json diff --git a/src/main/java/org/json/JSONObject.java b/src/main/java/org/json/JSONObject.java index 642e96703..b3abef821 100644 --- a/src/main/java/org/json/JSONObject.java +++ b/src/main/java/org/json/JSONObject.java @@ -19,42 +19,37 @@ import java.util.regex.Pattern; /** - * A JSONObject is an unordered collection of name/value pairs. Its external - * form is a string wrapped in curly braces with colons between the names and - * values, and commas between the values and names. The internal form is an - * object having get and opt methods for accessing - * the values by name, and put methods for adding or replacing - * values by name. The values can be any of these types: Boolean, + * A JSONObject is an unordered collection of name/value pairs. Its external form is a string wrapped in curly braces + * with colons between the names and values, and commas between the values and names. The internal form is an object + * having get and opt methods for accessing the values by name, and put methods + * for adding or replacing values by name. The values can be any of these types: Boolean, * JSONArray, JSONObject, Number, * String, or the JSONObject.NULL object. A - * JSONObject constructor can be used to convert an external form JSON text - * into an internal form whose values can be retrieved with the + * JSONObject constructor can be used to convert an external form JSON text into an internal form whose values can be + * retrieved with the * get and opt methods, or to convert values into a * JSON text using the put and toString methods. A * get method returns a value if one can be found, and throws an - * exception if one cannot be found. An opt method returns a - * default value instead of throwing an exception, and so is useful for - * obtaining optional values. + * exception if one cannot be found. An opt method returns a default value instead of throwing an + * exception, and so is useful for obtaining optional values. *

- * The generic get() and opt() methods return an - * object, which you can cast or query for type. There are also typed + * The generic get() and opt() methods return an object, which you can cast or query for type. + * There are also typed * get and opt methods that do type checking and type - * coercion for you. The opt methods differ from the get methods in that they - * do not throw. Instead, they return a specified value, such as null. + * coercion for you. The opt methods differ from the get methods in that they do not throw. Instead, they return a + * specified value, such as null. *

- * The put methods add or replace values in an object. For - * example, + * The put methods add or replace values in an object. For example, * *

  * myString = new JSONObject()
  *         .put("JSON", "Hello, World!").toString();
  * 
- * + *

* produces the string {"JSON": "Hello, World"}. *

- * The texts produced by the toString methods strictly conform to - * the JSON syntax rules. The constructors are more forgiving in the texts they - * will accept: + * The texts produced by the toString methods strictly conform to the JSON syntax rules. The constructors + * are more forgiving in the texts they will accept: *