diff options
author | Xianyuan Jia <xianyuanjia@google.com> | 2022-08-08 17:38:38 -0700 |
---|---|---|
committer | Xianyuan Jia <xianyuanjia@google.com> | 2022-08-08 17:42:24 -0700 |
commit | 6d6bc2b88444c00b594bb9dd694592306acdca93 (patch) | |
tree | 1dd4b4c0f315ba969691470d096fdeda4b31a9c6 | |
parent | e0279bbbfe3c8050e9a62c0e76e705f26b469884 (diff) | |
download | mobly-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.java | 51 |
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; } |