aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXianyuan Jia <xianyuanjia@google.com>2022-08-08 17:38:38 -0700
committerXianyuan Jia <xianyuanjia@google.com>2022-08-08 17:42:24 -0700
commit6d6bc2b88444c00b594bb9dd694592306acdca93 (patch)
tree1dd4b4c0f315ba969691470d096fdeda4b31a9c6
parente0279bbbfe3c8050e9a62c0e76e705f26b469884 (diff)
downloadmobly-snippet-lib-6d6bc2b88444c00b594bb9dd694592306acdca93.tar.gz
Support primitive array types in JsonBuilder
-rw-r--r--third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java51
1 files changed, 39 insertions, 12 deletions
diff --git a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java
index a1d3425..42629d8 100644
--- a/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java
+++ b/third_party/sl4a/src/main/java/com/google/android/mobly/snippet/rpc/JsonBuilder.java
@@ -104,15 +104,8 @@ public class JsonBuilder {
if (data instanceof URL) {
return buildURL((URL) data);
}
- if (data instanceof byte[]) {
- JSONArray result = new JSONArray();
- for (byte b : (byte[]) data) {
- result.put(b & 0xFF);
- }
- return result;
- }
- if (data instanceof Object[]) {
- return buildJSONArray((Object[]) data);
+ if (data.getClass().isArray()) {
+ return buildJSONArray(data);
}
// Try with custom converter provided by user.
Object result = SnippetObjectConverterManager.getInstance().objectToJson(data);
@@ -136,10 +129,44 @@ public class JsonBuilder {
return address;
}
- private static JSONArray buildJSONArray(Object[] data) throws JSONException {
+ private static JSONArray buildJSONArray(Object data) throws JSONException {
JSONArray result = new JSONArray();
- for (Object o : data) {
- result.put(build(o));
+ if (data instanceof int[]) {
+ for (int i : (int []) data) {
+ result.put(i);
+ }
+ } else if (data instanceof short[]) {
+ for (short s : (short[]) data) {
+ result.put(s);
+ }
+ } else if (data instanceof long[]) {
+ for (long l : (long[]) data) {
+ result.put(l);
+ }
+ } else if (data instanceof float[]) {
+ for (float f : (float[]) data) {
+ result.put(f);
+ }
+ } else if (data instanceof double[]) {
+ for (double d : (double[]) data) {
+ result.put(d);
+ }
+ } else if (data instanceof boolean[]) {
+ for (boolean b : (boolean[]) data) {
+ result.put(b);
+ }
+ } else if (data instanceof char[]) {
+ for (char c : (char[]) data) {
+ result.put(c);
+ }
+ } else if (data instanceof byte[]) {
+ for (byte b : (byte[]) data) {
+ result.put(b & 0xFF);
+ }
+ } else {
+ for (Object o : (Object[]) data) {
+ result.put(build(o));
+ }
}
return result;
}