From 7c7f5c315a80c5e53187166b7177f060e818178e Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Fri, 28 Oct 2022 16:17:42 +0700 Subject: [PATCH 1/2] fix(android/engine): Handle parsing empty JSONArray as JSONObject --- .../src/main/java/com/tavultesoft/kmea/JSONParser.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java index aff24562df..8388f0c3ae 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java @@ -16,6 +16,8 @@ import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.json.JSONArray; import org.json.JSONException; @@ -43,6 +45,13 @@ public final class JSONParser { } jsonStr = strBuilder.toString(); if (type == JSONObject.class) { + String EMPTY_JSONARRAY_FORMATSTR = "^\\[\\](\\n)?$"; + Pattern pattern = Pattern.compile(EMPTY_JSONARRAY_FORMATSTR); + Matcher matcher = pattern.matcher(jsonStr); + if (matcher.matches()) { + // Treat empty JSONArray as empty JSON Object. Issue #7564 + jsonStr = "{}"; + } obj = (T) new JSONObject(jsonStr); } else if (type == JSONArray.class) { obj = (T) new JSONArray(jsonStr); From ad3a088bf6838b9923fb3ada439f19a2f207883a Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Thu, 3 Nov 2022 11:06:01 +0700 Subject: [PATCH 2/2] Update android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java Co-authored-by: Marc Durdin --- .../KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java index 8388f0c3ae..e50a9366f4 100644 --- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java +++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/JSONParser.java @@ -45,7 +45,7 @@ public final class JSONParser { } jsonStr = strBuilder.toString(); if (type == JSONObject.class) { - String EMPTY_JSONARRAY_FORMATSTR = "^\\[\\](\\n)?$"; + String EMPTY_JSONARRAY_FORMATSTR = "^\\[\\](\\n)*$"; Pattern pattern = Pattern.compile(EMPTY_JSONARRAY_FORMATSTR); Matcher matcher = pattern.matcher(jsonStr); if (matcher.matches()) {