У меня очень большой массив строк json и я хочу отправить HTTP-запрос, который принимает не более 5 МБ данных за один почтовый вызов или учитывает 1000 записей (приблизительно) для каждого вызова.
JSON:
Items:[
{"Name" : "Chair",
"price" : "30"},
{"Name" : "Table",
"price" : "40"},
{"Name" : "laptop",
"price" : "300"},
...
]
Фрагмент Java:
public static void main(String args[]) throws Exception{
URL url = new URL("http://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);//5 secs
connection.setReadTimeout(5000);//5 secs
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/json");
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("json object");
out.flush();
out.close();
}
Прямо сейчас я отправляю весь массив json сразу. Может ли кто-нибудь помочь мне, как ограничить массив json, чтобы каждый раз я мог отправлять 1000 записей (приблизительно) одновременно в виде пакета.
Вам нужна помощь в разборе JSON и разделении его на партии?
@anchreg: да, вы можете помочь мне разбить на партии




Попробуй это,
int batch_size = 1000;
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonObj, JsonObject.class);
JsonArray array = jsonObject.getAsJsonArray("items");
int numberOfBatches = array.size() / batch_size;
for(int i = 0; i <= numberOfBatches; i++) {
JsonArray currentBatch = new JsonArray();
for(int j = 0; (j < batch_size || j < array.size()); j++) {
currentBatch.add(array.get((i * batch_size) + j));
}
//Your POST code
JsonObject objtoSend = new JsonObject();
objtoSend.add("items", currentBatch);
out.write(gson.toJson(objtoSend));
...
}
Он использует библиотеку Gson для сериализации и десериализации данных.
свати, это помогло?
Ну, вам нужно создать свой JSON с 1000 элементами и отправить его. Но поскольку я вижу здесь только
"json object", это не поможет;)