Reputation: 4632
How can I create a in android json like this.I can create the json object but still facing some problem to make like this.
{
"IncidentDetails": {
"StreetId": "370","StartDate":"21-03-2015","EndDate":"24-03-2015",
"ImageDetails": [
{
"PhoneImageUrl": "\/storage\/sdcard0\/Pictures\/GestiónDeIncidencias\/IMG_20150321_215458_-926186234.jpg",
"Base64ImageData": "Ioop9RLYCKTAIzRRSGIVGw9s1hvw5HvRRVRYtixan+daM2pCQ\/PH40nQ0uOOKM880guIQTmm044xnNNx",
},
{
"PhoneImageUrl": "\/storage\/sdcard0\/Pictures\/GestiónDeIncidencias\/IMG_20150321_215458_-926186234.jpg",
"Base64ImageData": "Ioop9RLYCKTAIzRRSGIVGw9s1hvw5HvRRVRYtixan+daM2pCQ\/PH40nQ0uOOKM880guIQTmm044xnNNx",
},
{
"PhoneImageUrl": "\/storage\/sdcard0\/Pictures\/GestiónDeIncidencias\/IMG_20150321_215458_-926186234.jpg",
"Base64ImageData": "Ioop9RLYCKTAIzRRSGIVGw9s1hvw5HvRRVRYtixan+daM2pCQ\/PH40nQ0uOOKM880guIQTmm044xnNNx",
}
]}
}
What I tried in my android code just have a look it giving totally different output
JSONArray jsonArray = new JSONArray();
JSONObject IncidentDetails = new JSONObject();
try
{
IncidentDetails.put("StartDate", EditTextStartText.getText().toString());
IncidentDetails.put("EndDate", EditTextEndText.getText().toString());
IncidentDetails.put("StreetId", StreetId);
jsonArray.put(IncidentDetails);
for(int i=0; i<length; i++)
{
JSONObject ImageDetails = new JSONObject();
ImageDetails.put("Base64ImageData", getBase64Image(ReusableClass.imgUrl.get(i)));
ImageDetails.put("PhoneImageUrl", ReusableClass.imgUrl.get(i));
jsonArray.put(ImageDetails);
}
JSONObject IncidentDetailsObj = new JSONObject();
IncidentDetailsObj.put("IncidentDetails", jsonArray);
String jsonStr = IncidentDetailsObj.toString();
My current output
{"IncidentDetails":[{"StreetId":"370","StartDate":"18-03-2015","EndDate":""},{"PhoneImageUrl":"\/storage\/sdcard0\/Pictures\/GestiónDeIncidencias\/IMG_20150318_171451_1389057690.jpg","Base64ImageData":"\/9j\/4AAQSkZJRgABAQAAAQABAAD\/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkz\nODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P\/2wBDARESEhgVGC8aGi9jQjhCY2NjY2Nj\nY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P\/wAA"},{"PhoneImageUrl":"\/storage\/sdcard0\/Pictures\/GestiónDeIncidencias\/IMG_20150318_171451_1389057690.jpg","Base64ImageData":"\/9j\/4AAQSkZJRgABAQAAAQABAAD\/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkz\nODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P\/2wBDARESEhgVGC8aGi9jQjhCY2NjY2Nj\nY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P\/wAA"}]}
Upvotes: 0
Views: 76
Reputation: 501
Notice that that this is very common scenario, so there has to be some library that deals it for you :)
I recommend https://code.google.com/p/google-gson - GSON. All you have to do is to prepare POJO class that describes JSON, in your case:
public class IncidentDetails {
IncidentDetails incidentDetails;
}
public class IncidentDetails {
String streetId;
String startDate;
String endDate;
ImageDetails imageDetails;
}
Then do the same with ImageDetails
. All you have to do then is to create GSON with proper naming policy (it converts automaticcaly class fields names to JSON).
gson.toJson(incidentDetails)
creates String you desire. gson.fromString(String json)
will create IncidentDetails
object from json string.
Upvotes: 1
Reputation: 1377
see answer with comments,
//* IncidentalDetial is an object not an array
JSONObject IncidentDetails = new JSONObject();
//* add the first three elements
IncidentDetails.put("StartDate", EditTextStartText.getText().toString());
IncidentDetails.put("EndDate", EditTextEndText.getText().toString());
IncidentDetails.put("StreetId", StreetId);
//* contruct the imagedetails array
JSONArray jsonArray = new JSONArray();
for(int i=0; i<length; i++)
{
JSONObject ImageDetails = new JSONObject();
ImageDetails.put("Base64ImageData", getBase64Image(ReusableClass.imgUrl.get(i)));
ImageDetails.put("PhoneImageUrl", ReusableClass.imgUrl.get(i));
jsonArray.put(ImageDetails);
}
//* add the imagedetails array to the incidentDetials object
IncidentDetails.put(jsonArray);
JSONObject IncidentDetailsObj = new JSONObject();
IncidentDetailsObj .put(IncidentDetails);
String jsonStr = IncidentDetailsObj.toString();
Upvotes: 1
Reputation: 12358
Use this
JSONArray jsonArray = new JSONArray();
JSONObject IncidentDetails = new JSONObject();
try
{
IncidentDetails.put("StartDate", EditTextStartText.getText().toString());
IncidentDetails.put("EndDate", EditTextEndText.getText().toString());
IncidentDetails.put("StreetId", StreetId);
for(int i=0; i<length; i++)
{
JSONObject ImageDetails = new JSONObject();
ImageDetails.put("Base64ImageData", getBase64Image(ReusableClass.imgUrl.get(i)));
ImageDetails.put("PhoneImageUrl", ReusableClass.imgUrl.get(i));
jsonArray.put(ImageDetails);
}
IncidentDetails.put("ImageDetails", jsonArray);
JSONObject IncidentDetailsObj = new JSONObject();
IncidentDetailsObj.put("IncidentDetails", IncidentDetails);
String jsonStr = IncidentDetailsObj.toString();
Upvotes: 1