From ea9d9ebea54b88d352e1ab18db79af0ef5e12ecd Mon Sep 17 00:00:00 2001 From: lnash94 Date: Mon, 16 Sep 2024 21:50:16 +0530 Subject: [PATCH] Fix review suggestion --- ballerina/json_api.bal | 24 +++++++------------ .../lib/data/jsondata/json/Native.java | 4 ++-- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/ballerina/json_api.bal b/ballerina/json_api.bal index c7889ee..d88fb8e 100644 --- a/ballerina/json_api.bal +++ b/ballerina/json_api.bal @@ -53,23 +53,17 @@ public isolated function parseStream(stream s, Options options = # Converts a value of type `anydata` to `json`. # -# + j - Source anydata value -# + return - representation of `j` as value of type json -public isolated function toJson(anydata j) returns json { - if j is anydata[] { - json[] arr = from anydata elem in j +# + v - Source anydata value +# + return - representation of `v` as value of type json +public isolated function toJson(anydata v) returns json { + if v is anydata[] { + return from anydata elem in v select toJson(elem); - return arr; - } else if j is map { - map m = {}; - foreach var [key, v] in j.entries() { - string newKey = getNameAnnotation(j, key); - m[newKey] = toJson(v); - } - return m; - } else { - return j.toJson(); + } else if v is map { + return map from var [key, feild] in v.entries() + select [getNameAnnotation(v, key), toJson(feild)]; } + return v.toJson(); } isolated function getNameAnnotation(map data, string key) returns string = @java:Method {'class: "io.ballerina.lib.data.jsondata.json.Native"} external; diff --git a/native/src/main/java/io/ballerina/lib/data/jsondata/json/Native.java b/native/src/main/java/io/ballerina/lib/data/jsondata/json/Native.java index 8037021..017a2ff 100644 --- a/native/src/main/java/io/ballerina/lib/data/jsondata/json/Native.java +++ b/native/src/main/java/io/ballerina/lib/data/jsondata/json/Native.java @@ -82,8 +82,8 @@ public static Object parseStream(Environment env, BStream json, BMap options, BString key) { - if (!(options.getType() instanceof RecordType recordType)) { + public static BString getNameAnnotation(BMap value, BString key) { + if (!(value.getType() instanceof RecordType recordType)) { return key; } BMap annotations = recordType.getAnnotations();