java - 使用 int 数组将 JSON 序列化为 Spring RequestBody
问题描述
我有一个将 a 指定@RequestBody
为参数的 Spring 控制器方法。请求正文的类看起来像这样
public class myClass {
CustomObject obj
int x
int y
int[] values
Character c
//getters and setters
}
我正在编写单元测试,并且无法int[] values
通过普通的 JSONobject 设置元素。如果可能,我宁愿不使用 JSONArray,因为其他元素通过 JSONObject 很好地传递,如下所示:
JSONObject requestParams = new JSONObject();
if(obj != null)
requestParams.put("obj", obj);
if(c != null)
requestParams.put("c", c);
我已经尝试requestParams.put("values", Arrays.toString(values))
将值定义为int[] values = new int[]{10,20,30,40,50,60,10,15,20,30,40,55}
但在我尝试发送请求时仍然收到 400 错误,只有当values
它不为空时。
如何通过 JSONObject 将此值列表发送到 RequestBody 类?
解决方案
你可以像下面这样使用:
//prepare list
List<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(20);
...
list.add(100);
JSONArray array = new JSONArray();
for (int i = 0; i < list.size(); i++) {
array.put(list.get(i));
}
JSONObject obj = new JSONObject();
try {
obj.put("values", array);
}catch(JSONException ee){
}
以上是您可以减少样板代码的简化方式。
推荐阅读
- c# - C# - 如何显示完整的 Windows 10 内部版本号?
- javascript - 将变量与对象进行比较,并根据值差异返回元素
- reactjs - 我怎么能从 getCellActions 改变我的状态
- android - Android studio 新项目设计预览为空
- javascript - VSCode:如何让 Intellisense 与 vanilla Javascript 项目一起工作?
- postgresql - Postgres `ON CONFLICT` 更新变量而不是表,“”或附近的语法错误
- php - 我可以在 XAMPP 上有两个 wordpress 网站文件夹、不同的数据库和不同的前缀吗?
- .htaccess - 使用 htaccess 在没有 302 状态的内部重定向 URL
- javascript - “this”在地图运算符 Angular 中未定义
- html - HTML/CSS 侧边栏和平铺视图