Java 拆分JsonArray
我想从包Java 拆分JsonArray,java,json,Java,Json,我想从包javax.json中拆分一个JsonArray,但我找不到一个方便的方法来完成这项工作。我浏览了文档,我只能想到迭代JsonArray并使用JsonArrayBuilder手动添加项目 是否有更方便的方法拆分阵列 请注意,我不能使用其他软件包(如google.gson)。 提前谢谢 编辑:我有一个大小为N的JsonArray,我想通过索引将它从和拆分为,并将结果保存为JsonArray 大概是这样的: JsonArray array1 = getJsonArrayOfSize(10);
javax.json
中拆分一个JsonArray
,但我找不到一个方便的方法来完成这项工作。我浏览了文档,我只能想到迭代JsonArray
并使用JsonArrayBuilder
手动添加项目
是否有更方便的方法拆分阵列
请注意,我不能使用其他软件包(如google.gson
)。
提前谢谢
编辑:我有一个大小为N
的JsonArray
,我想通过索引将它从和拆分为,并将结果保存为JsonArray
大概是这样的:
JsonArray array1 = getJsonArrayOfSize(10);
JsonArray array2 = array1.split(2,5);
与格森
List<MyModel> myModelList = gson.fromJson(jsonArray.toString(), listType);
您可以使用以下方法:
将您的JsonArray
转换为List,然后在List
中拆分每个项目。显示一个示例?您能详细说明拆分数组的含义吗?@VishwaRatna我添加了一个示例。请注意,我不能使用其他包(例如google.gson
)。你读了吗?
public class Converter {
public static void main(String[] args) {
String str = "{\r\n" +
"\"name\":\"John\",\r\n" +
"\"age\":30,\r\n" +
"\"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ]\r\n" +
"}";
JsonReader reader = Json.createReader(new StringReader(str));
JsonObject object = reader.readObject();
JsonArray array = object.getJsonArray("cars");
System.out.println(getJsonArrayFromIndex(1, 2, array));
System.out.println(getJsonArrayFromIndex(0, 2, array));
System.out.println(getJsonArrayFromIndex(0, 1, array));
}
public static List<JsonValue> getJsonArrayFromIndex(int start, int end, JsonArray array) {
return array.subList(start, end);
}
}
[BMW]
[Ford, BMW]
[Ford]
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class JsonApp {
public static void main(String[] args) {
List<Integer> ints = IntStream.range(1, 10).boxed().collect(Collectors.toList());
JsonArrayExt array = new JsonArrayExt(ints);
JsonArray array1 = array.subList(2, 5);
System.out.println(array);
System.out.println(array1);
}
}
class JsonArrayExt {
private final JsonArray array;
public JsonArrayExt(List<Integer> ints) {
this(Json.createArrayBuilder(ints).build());
}
public JsonArrayExt(JsonArray array) {
this.array = Objects.requireNonNull(array);
}
public JsonArray subList(int fromIndex, int toIndex) {
JsonArrayBuilder builder = Json.createArrayBuilder();
array.subList(fromIndex, toIndex).forEach(builder::add);
return builder.build();
}
@Override
public String toString() {
return array.toString();
}
}
[1,2,3,4,5,6,7,8,9]
[3,4,5]