目前我正在爲android設備的web服務工作,其中設備可以將json數據上傳到服務器(tomcat8上的java webapp),然後將數據保存到數據庫(MySQL的)。在文件JSON編輯沒有加載文件的所有數據
我的問題是,數據包含圖像,並可能增長到每個上傳文件大約100 MB。圖像不得與其他信息分開上傳。
所以我需要把所有的數據放在一個JSON中並上傳它。
我想知道是否有可能用一些json庫訪問json文件而不完全加載它並直接向文件添加更多數據。
一個例子給出這類:
public class Person {
private String name;
private String surname;
private Address address;
private List<ImageData> data;
public class Address {
private String address;
private String city;
private String state;
}
public class ImageData {
private String id;
private String base64;
}
}
一個人是這樣產生的:
public static String toJson(Person person) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", person.getName());
jsonObject.put("surename", person.getSurname());
JSONObject jsonAdd = new JSONObject();
jsonAdd.put("address", person.getAddress().getAddress());
jsonAdd.put("city", person.getAddress().getCity());
jsonAdd.put("state", person.getAddress().getState());
jsonObject.put("address", jsonAdd);
JSONArray jsonArray = new JSONArray();
for(Person.ImageData pn : person.getImageData()) {
JSONObject jsonPhone = new JSONObject();
jsonPhone.put("id", pn.getId());
jsonPhone.put("base64", pn.getBase64());
jsonArray.put(jsonPhone);
}
jsonObject.put("imageData", jsonArray);
return jsonObject.toString();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
有了這樣的輸出:
{
"imageData": [
{
"base64": "someimage",
"id": "11111"
}
],
"address": {
"state": "somewhere",
"address": "somewhere, 000",
"city": "somewhere city"
},
"surname": "sure",
"name": "last"
}
要將現有的人與所有字段填充和一個Imagedata我想添加一個額外的ImageData而不加載整個JsonArray類型ImageData所以輸出將是這樣的:
{
"imageData": [
{
"base64": "someimage",
"id": "11111"
},
{
"base64": "someimage",
"id": "2222"
}
],
"address": {
"state": "somewhere",
"address": "somewhere, 000",
"city": "somewhere city"
},
"surname": "sure",
"name": "last"
}
是否可以直接編輯文件而不加載所有內容?像搜索imagedata容器,但不加載內容(id和base64),然後添加一個額外的元素(ID,基地64)到容器?