JSONArray获取其中字段然后转list<string>,并且在每个string后面加工单数
时间: 2023-12-09 08:02:27 浏览: 153
假设你有一个名为`jsonArray`的JSONArray对象,其中包含多个JSON对象,每个对象都有一个名为`field`的字段。你可以使用以下代码将`field`字段的值提取出来,并将其转换为字符串列表,同时在每个字符串后面加上工单数:
```java
List<String> fieldValuesWithOrderCount = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String fieldValue = jsonObject.getString("field");
String fieldValueWithOrderCount = fieldValue + "(工单数:" + i + ")";
fieldValuesWithOrderCount.add(fieldValueWithOrderCount);
}
```
这个代码首先创建一个空的字符串列表`fieldValuesWithOrderCount`,然后使用循环遍历`jsonArray`中的每个JSON对象。对于每个JSON对象,它使用`getJSONObject()`方法将其转换为JSONObject对象,然后使用`getString()`方法提取`field`字段的值,并将其拼接上工单数。最后,将拼接后的字符串添加到`fieldValuesWithOrderCount`列表中。在循环结束后,`fieldValuesWithOrderCount`列表将包含所有`jsonArray`中的`field`字段的值,并且每个字符串后面都会加上工单数。
如果你想使用Java 8的流(Stream)来实现这个功能,可以使用以下代码:
```java
List<String> fieldValuesWithOrderCount = jsonArray
.stream()
.map(obj -> (JSONObject) obj)
.map(obj -> obj.getString("field"))
.map((fieldValue, i) -> fieldValue + "(工单数:" + i + ")")
.collect(Collectors.toList());
```
这个代码首先将`jsonArray`对象转换为流(Stream)对象,然后使用`map()`方法将每个JSON对象转换为JSONObject对象,再使用`map()`方法提取`field`字段的值。接着,使用`map()`方法将每个字符串都拼接上工单数。在拼接工单数时,使用`map()`方法提供一个`BiFunction`函数,它接受两个参数:字符串值和索引值。在这个函数中,使用`String.format()`方法将字符串和索引值拼接为一个新的字符串。最后,使用`collect()`方法将结果收集到一个字符串列表中。这种方法比使用传统的循环更简洁,并且可以利用Java 8中的并行处理功能提高性能。
阅读全文