gpt4 book ai didi

java - 使用 Gson 如何将变量名称添加为 REST 调用的 json 的顶级参数

转载 作者:搜寻专家 更新时间:2023-11-01 03:05:39 25 4
gpt4 key购买 nike

我正在尝试调用 REST 服务并使用 gson 我正在为以下 java pojo 获取以下 json。

pojo

public class AlphaParameters {
private int one;
private int two;
private int three;

//getter setters
//constructors
}

JSON

{"one":4,
"two":5,
"three":10
}

我正在使用下面的代码

Gson gson = new Gson()
AlphaParameters alphaParameters = new AlphaParameters(one,two,three);
gson.toJson(alphaParameters );

以前这段代码可以工作,但现在似乎 .net 上的服务器端改变了他们的实现,现在他们期待以下格式的 json。一切都一样,但现在他们似乎想要 json 中的顶级变量名称。

{"alphaParameters":
{"one":4,
"two":5,
"three":10
}
}

问题:是否有特定的 Gson api,我可以使用它来生成上述 json 而无需重构我的代码?或者编写一个包含 alphaParameters 的包装类将是更好的方法。(我将不得不为后者编写大量样板代码)。

感谢您的帮助。

最佳答案

我不认为 Gson 本身允许这种序列化,但是有很多方法可以在不创建包装类的情况下解决这个问题。

在我的评论中,我建议将对象放在 map 中,但这有点奇怪,您可以这样做,这样它在代码中看起来更明显并且性能可能更好。

public Gson wrapJson(Object objectToSerialize) {
Gson gson = new Gson();
JsonObject result = new JsonObject();
//Obtain a serialized version of your object
JsonElement jsonElement = gson.toJsonTree(objectToSerialize);
result.add(objectToSerialize.getClass().getSimpleName(), jsonElement);
return result;
}

然后你可以像这样使用它:

AlphaParameters alphaParameters = new AlphaParameters(one,two,three);
wrapJson(alphaParameters);

这允许您在像这样的每种情况下都使用一种非常通用的方法,而无需编写样板类。

我使用类名来生成 key ,但您可以根据需要随意修改它。您可以将 key 名称作为参数传递,以使此包装器实用程序更加灵活。

关于java - 使用 Gson 如何将变量名称添加为 REST 调用的 json 的顶级参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com