java - 如何在java中创建一个动态的json主体
问题描述
我设置了一个数据表,我想做的是浏览表并根据表设置 json 正文。
我的想法是获取列名,并基于此,如果设置了值,则将其添加到正文中,然后作为请求发送。
例如:
|colour|food |
| |pizza|
|red | |
因此,当它遍历第一行时,它应该创建一个 json 主体:
"food":"pizza"
以上将作为请求发送。
请求完成后,我们移动到第二行,作为请求传递的 json 主体将是:
"color":"red"
如您所见,我们忽略了每一行中的缺失值,只通过其中包含值的字段(列)。
我的问题是如何构造那个 json 主体来做到这一点?
目前,我设法遍历列名,但不确定如何构造该动态主体。目前我有:
public void testMethod(final Table table) {
table.getColumnNames().forEach(columnName -> {
final String value = table.getTableRows().get(0).getCell(columnName);
postRequest("/test/endpoint", getCurrentHeaders(), SerializationHelper.asString(body));
});
}
我还没有设置正文,我只是想建立结构并希望有人可以填补创建“正文”变量的缺失部分,以通过预期的 json 正文请求。
解决方案
在 JAVA 上,为了创建 JSON,我们 (I) 通常使用org.json
命名空间。
首先创建对象:
JSONObject body = new JSONObject();
接下来用值填充它,对于每个表行迭代:
//this will be to fill the array config
JSONArray rowArray = new JSONArray();
//I don't know what your Table is
// so this is just a pseudo code to get rows
table.getRows().forEach(row -> {
table.getColumnNames().forEach(columnName -> {
final String value = row.getCell(columnName);
if(!value.equals("")){
JSONObject thisColumn = new JSONObject();
thisColumn.put(columnName, value);
rowArray.put(thisColumn);
}
});
});
//now set our array into the JSON body
body.put("config", rowArray);
最后,在循环之外执行请求:
postRequest("/test/endpoint", getCurrentHeaders(), SerializationHelper.asString(body));
推荐阅读
- laravel - 使用 Laravel、VueJS 和 Inertiajs 导出 Excel
- java - 未定义的标签:firestore 内的 loop3
- javascript - 自定义 Google 表格图表的单元格
- python - 为什么列表不保留它的价值?
- python - 将特定于类别的值分配为新列中的观察值
- firebase - 使用 Spring Boot 将图像上传到 Firebase
- redux - 使用(Material-ui + React Redux + SSR 中的 Next.js)重新渲染未更新传递的属性
- windows - 显示内存内容时,windbg 是否会自行处理内核中的分页代码?
- python - 当特定语句需要更多时间执行时,如何在 Python for 循环中跳过迭代?
- csv - 用于搜索(大)未排序数组的索引(类型)