new JSONObject(new LinkedHashMap())在for循环中存值,每次存完清空
时间: 2023-07-14 15:14:01 浏览: 41
可以使用一个临时的 `JSONObject` 对象来存储循环中的键值对,然后在每次循环结束后将其添加到外部的 `JSONObject` 对象中,并清空临时的 `JSONObject` 对象。
示例代码如下:
```
JSONObject json = new JSONObject();
for (int i = 0; i < 10; i++) {
JSONObject temp = new JSONObject();
temp.put("key1", "value1");
temp.put("key2", "value2");
json.put("item" + i, temp);
temp.clear();
}
```
在上面的示例代码中,我们首先创建了一个外部的 `JSONObject` 对象 `json`,然后在循环中创建了一个临时的 `JSONObject` 对象 `temp`,并向其中存储了两个键值对。接着,我们将 `temp` 对象添加到 `json` 对象中,并清空 `temp` 对象,以便下一次循环可以重新使用。最终,`json` 对象中会包含 10 个键为 `item0` 到 `item9` 的子对象,每个子对象中包含两个键值对。
相关问题
JSONObject object = new JSONObject(new LinkedHashMap()); 在for中循环存值,每次存完清空
### 回答1:
这段代码使用了Java中的JSON库,创建了一个空的JSONObject对象,并且传入了一个LinkedHashMap对象,用于保存键值对。
接下来在for循环中循环存储值,每次将数据存入JSONObject对象中,然后清空LinkedHashMap对象,以便下一次存储。
代码示例:
```
JSONObject object = new JSONObject(new LinkedHashMap());
LinkedHashMap<String, String> map = new LinkedHashMap<>();
for (int i = 0; i < 10; i++) {
// 存储键值对
map.put("key" + i, "value" + i);
// 将map转换为JSON对象并存储
object.putAll(map);
// 清空map
map.clear();
}
```
注意,每次清空LinkedHashMap对象并不会影响已经存储在JSONObject对象中的数据。
### 回答2:
JSONObject object = new JSONObject(new LinkedHashMap())创建了一个空的JSONObject对象,并使用LinkedHashMap作为内部存储结构。
接下来,使用for循环来存储值并在每次存储后进行清空。具体代码如下:
```java
for (int i = 0; i < n; i++) {
// 存储值,假设值为key和value
object.put(key, value);
// 清空JSONObject对象
object.clear();
}
```
这段代码会执行n次循环,每次循环都会向JSONObject对象中存储一个键值对,并在存储后进行清空操作。由于JSONObject对象是有序的,使用LinkedHashMap作为内部存储结构可以保持存储的顺序。
注意,每次循环都会清空JSONObject对象,意味着每次存储的键值对都会被清空。所以,最终JSONObject对象将只包含最后一次循环存储的键值对。
这种循环存储和清空的操作适用于需要动态存储并清空数据的场景,例如在数据处理过程中,根据特定条件不断更新并清空JSONObject对象。
//获取流程模板编号 String templateCode = event.getTemplateCode(); log.info("进入流程结束事件 --> 表单编号为 " + templateCode); FormBean formBean = formApi4Cap4.getFormByFormCode(templateCode); String tableName = formBean.getMasterTableBean().getTableName(); Long masterId = affair.getFormRecordid(); FormDataMasterBean dataMasterBeanById = formApi4Cap4.getDataMasterBeanById(masterId, formBean, null); String allDataJSONString = dataMasterBeanById.getAllDataJSONString(); JSONObject jsonObject = JSONObject.parseObject(allDataJSONString); JSONObject masterJson=new JSONObject(new LinkedHashMap()); JSONObject infoJson=new JSONObject(new LinkedHashMap()); Map<String,Object> maps=(Map<String, Object>) jsonObject.get(tableName); String serialNum = FormCommonUtils.getFieldName(formBean, "流水号"); masterJson.put("serialNum",maps.get(serialNum)); String shipperOrg = FormCommonUtils.getFieldName(formBean, "所属单位"); masterJson.put("shipperOrg",maps.get(shipperOrg)); String DocType = FormCommonUtils.getFieldName(formBean, "单据类型"); masterJson.put("DocType",maps.get(DocType)); System.out.println(masterJson);给这段代码添加注释
```
// 获取流程模板编号
String templateCode = event.getTemplateCode();
log.info("进入流程结束事件 --> 表单编号为 " + templateCode);
// 根据表单编号获取表单信息
FormBean formBean = formApi4Cap4.getFormByFormCode(templateCode);
String tableName = formBean.getMasterTableBean().getTableName();
// 获取流程表单主记录ID,并根据ID获取表单数据
Long masterId = affair.getFormRecordid();
FormDataMasterBean dataMasterBeanById = formApi4Cap4.getDataMasterBeanById(masterId, formBean, null);
String allDataJSONString = dataMasterBeanById.getAllDataJSONString();
JSONObject jsonObject = JSONObject.parseObject(allDataJSONString);
// 根据表名获取表单主记录的JSON对象
JSONObject masterJson = new JSONObject(new LinkedHashMap());
JSONObject infoJson = new JSONObject(new LinkedHashMap());
Map<String,Object> maps = (Map<String, Object>) jsonObject.get(tableName);
// 获取表单中的流水号、所属单位、单据类型等信息,并存入 masterJson 对象中
String serialNum = FormCommonUtils.getFieldName(formBean, "流水号");
masterJson.put("serialNum",maps.get(serialNum));
String shipperOrg = FormCommonUtils.getFieldName(formBean, "所属单位");
masterJson.put("shipperOrg",maps.get(shipperOrg));
String DocType = FormCommonUtils.getFieldName(formBean, "单据类型");
masterJson.put("DocType",maps.get(DocType));
// 输出 masterJson 对象
System.out.println(masterJson);
```
这段代码的作用是从一个表单记录中提取出流水号、所属单位、单据类型等信息,并将其存入 `masterJson` 对象中。具体的注释已经加在代码中了。
阅读全文