У меня есть массив объектов, представляющий собой список значений аргументов, которые может принимать функция.Это может быть любой сложный объект.
Я пытаюсь построить json из массива объектов, используя gson, как показано ниже:
private JsonArray createArgsJsonArray(Object... argVals) {
JsonArray argsArray = new JsonArray();
Arrays.stream(argVals).forEach(arg -> argsArray.add(gson.toJson(arg)));
return argsArray;
}
- При этом все значения arg обрабатываются как String.
Он избегает строковых аргументов
"args":["\"STRING\"","1251996697","85"]
Я предпочитаю следующий вывод:
"args":["STRING",1251996697,85]
Есть ли способдобиться этого с помощью gson?
Я использовал org.json
, мне удалось достичь желаемого результата, но он не работает для сложных объектов.
РЕДАКТИРОВАТЬ:
Iприменил решение, предоставленное @ Michał Ziober, но теперь, как мне вернуть объект.
Gson gson = new Gson();
Object strObj = "'";
JsonObject fnObj = new JsonObject();
JsonObject fnObj2 = new JsonObject();
fnObj.add("response", gson.toJsonTree(strObj));
fnObj2.addProperty("response", gson.toJson(strObj));
System.out.println(gson.fromJson(fnObj.toString(),
Object.class)); --> prints {response='} //Not what I want!
System.out.println(gson.fromJson(fnObj2.toString(),
Object.class)); --> prints {response="\u0027"}