private Map<String, JSONObject> waterDeduction(Date startDate, Date endDate, QFilter qFilter) { Map<String, JSONObject> map = new HashMap<>(); QFilter startQf = new QFilter("mdsp_tradingtime", QCP.large_equals, startDate); QFilter endQf = new QFilter("mdsp_tradingtime", QCP.less_equals, endDate); QFilter andQf = qFilter.and(endQf).and(startQf); String sql = "mdsp_tradingtime,mdsp_userfield,mdsp_summoney,mdsp_usernumber,mdsp_paymenttype"; DataSet billRows = QueryServiceHelper.queryDataSet(this.getClass().getName(), ChargingSystemEntity.WATER_TS_MASTER.key(), sql, andQf.toArray(), "mdsp_tradingtime") .groupBy(new String[]{"mdsp_userfield", "mdsp_paymenttype"}) .sum("mdsp_summoney") .countDistinct(new String[]{"mdsp_usernumber"}) .finish(); while (billRows.hasNext()) { Row row = billRows.next(); Long user = row.getLong("mdsp_userfield"); Long payType = row.getLong("mdsp_paymenttype"); String key = user + "," + payType; JSONObject json = new JSONObject(); json.put("user", user); json.put("payType", payType); json.put("sumMoney", row.getBigDecimal("mdsp_summoney")); json.put("count", row.getInteger("mdsp_usernumber")); map.put(key, json); } billRows.close(); return map; }
时间: 2024-04-18 09:32:42 浏览: 187
这是一个私有方法,它接受`startDate`、`endDate`和`qFilter`作为参数,并返回一个类型为`Map<String, JSONObject>`的结果。该方法使用`QueryServiceHelper`类来查询名为`ChargingSystemEntity.WATER_TS_MASTER.key()`的数据集,并根据提供的过滤器对数据进行过滤。
在循环中,每次迭代都会创建一个新的`JSONObject`对象,并将查询结果中的"mdsp_userfield"和"mdsp_paymenttype"字段的值作为键,以及"mdsp_summoney"和"mdsp_usernumber"字段的值作为对应的值,存储到该对象中。然后,将每个创建的`JSONObject`对象添加到`map`中,并使用"mdsp_userfield"和"mdsp_paymenttype"拼接成的字符串作为键。
请注意,最后关闭了`billRows`对象,以确保资源被正确释放。返回的结果是一个键为用户和支付类型组合的字符串,值为对应数据的`JSONObject`对象的映射。
相关问题
下面的代码,jsonStr长度非常长,java报错常量字符串过长,怎么解决 public static void main(String[] args) { String jsonStr = ""; JSONArray jsonArray = JSON.parseArray(jsonStr); List<Map<String, Object>> list = new ArrayList<>(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Map<String, Object> map = new HashMap<>(); map.put("id", jsonObject.getString("id")); map.put("name", jsonObject.getString("name")); map.put("parentId", jsonObject.getString("parentId")); list.add(map); } List<Map<String, Object>> treeList = buildTree(list); System.out.println(treeList); } private static List<Map<String, Object>> buildTree(List<Map<String, Object>> list) { List<Map<String, Object>> treeList = new ArrayList<>(); for (Map<String, Object> map : list) { String parentId = (String) map.get("parentId"); if (parentId == null || "".equals(parentId)) { treeList.add(map); } for (Map<String, Object> it : list) { String id = (String) it.get("parentId"); if (map.get("id").equals(id)) { if (map.get("children") == null) { List<Map<String, Object>> children = new ArrayList<>(); children.add(it); map.put("children", children); } else { ((List<Map<String, Object>>) map.get("children")).add(it); } } } } return treeList; }
你好! 我看到你的代码中有一个变量名为`jsonStr`的字符串变量,你说它的长度非常长,导致程序运行时报错。
如果你想要解决这个问题,你可以使用以下几种方法之一:
1. 将字符串分割成多个较短的字符串,然后使用 `+` 运算符将它们连接起来
2. 使用 `StringBuilder` 类来构建字符串
3. 将字符串保存到一个文件中,然后读取文件内容来获取字符串
4. 使用 `InputStream` 和 `OutputStream` 类来操作字符串
举个例子,你可以使用第一种方法将字符串分割成较短的字符串然后连接起来,如下所示:
```
String jsonStr = "";
String str1 = "";
String str2 = "";
String str3 = "";
// 将 jsonStr 分割成三个较短的字符串
jsonStr = str1 + str2 + str3;
```
希望这些建议能帮助你解决问题! 如果你还有其他问题,请随时给我留言。
List<JSONObject> 转换成Map<String,JSONObject>, map的key为JSONObject的其中一个属性
可以通过遍历List,将每个JSONObject对象提取出来的key作为Map的key,JSONObject对象作为Map的value,存入Map中,实现List<JSONObject>转换成Map<String,JSONObject>,其中Map的key为JSONObject的其中一个属性。
以下是Java代码示例:
```java
List<JSONObject> list = new ArrayList<>();
Map<String, JSONObject> map = new HashMap<>();
for (JSONObject obj : list) {
map.put(obj.getString("属性名"), obj);
}
```
其中"属性名"为要作为Map的key的JSONObject对象的属性名。
阅读全文