A J
A J

Reputation: 4632

Create json fromat in android

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

Answers (3)

Krzysztof Misztal
Krzysztof Misztal

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

faljbour
faljbour

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

Fahim
Fahim

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

Related Questions