YY.theFenix
YY.theFenix

Reputation: 25

How to add jsonobject in to jsonarray which i want

I can do only add jsonobj and json obj like in the left hand side in this picture

enter image description here

but if i want to add data like right hand side what code should i add to my code (i want to know how to specific the header of json array which i want to add) (credit code from ThinkTwiceCodeOnce) my code is ...

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    new PostDataTask().execute("http://<myip4:port>/api/status");
}
class PostDataTask extends AsyncTask<String, Void, String> {

    ProgressDialog progressDialog;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        progressDialog = new ProgressDialog(MainActivity.this);
        progressDialog.setMessage("Inserting data...");
        progressDialog.show();
    }

    @Override
    protected String doInBackground(String... params) {

        try {
            return postData(params[0]);
        } catch (IOException ex) {
            return "Network error !";
        } catch (JSONException ex) {
            return "Data Invalid !";
        }
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        mResult.setText(result);

        if (progressDialog != null) {
            progressDialog.dismiss();
        }
    }

    private String postData(String urlPath) throws IOException, JSONException {

        StringBuilder result = new StringBuilder();
        BufferedWriter bufferedWriter = null;
        BufferedReader bufferedReader = null;

        try {
            //Create data to send to server
            JSONObject dataToSend = new JSONObject();
            dataToSend.put("name", "puggy");
            dataToSend.put("like", "dog");
            dataToSend.put("eat", "meat");
            dataToSend.put("fav", "red balloon");

            //Initialize and config request, then connect to server.
            URL url = new URL(urlPath);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setReadTimeout(10000 /* milliseconds */);
            urlConnection.setConnectTimeout(10000 /* milliseconds */);
            urlConnection.setRequestMethod("POST");
            urlConnection.setDoOutput(true);  //enable output (body data)
            urlConnection.setRequestProperty("Content-Type", "application/json");// set header
            urlConnection.connect();

            //Write data into server
            OutputStream outputStream = urlConnection.getOutputStream(); 
            bufferedWriter = new BufferedWriter(new              OutputStreamWriter(outputStream));
            bufferedWriter.write(dataToSend.toString());
            bufferedWriter.flush();
            //Read data response from server
            InputStream inputStream = urlConnection.getInputStream();
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                result.append(line).append("\n");
            }
        } finally {
            if (bufferedReader != null) {
                bufferedReader.close();
            }
            if (bufferedWriter != null) {
                bufferedWriter.close();
            }
        }

        return result.toString();
    }
}

Upvotes: 2

Views: 8370

Answers (3)

Ferdous Ahamed
Ferdous Ahamed

Reputation: 21736

Use dataToSend.put("profile", JSONArrayProfile) to add profile JSONArray to JSONObject.

Here is the working code. Try this:

try {
        JSONObject dataToSend = new JSONObject();

        // Profile
        JSONArray jsonArrayProfile = new JSONArray();

        // Post 1
        JSONObject jsonObjectPost1 = new JSONObject();
        jsonObjectPost1.put("fbname", "Think Twice Code Once");
        jsonObjectPost1.put("content", "felling full");
        jsonObjectPost1.put("likes", 1);
        jsonObjectPost1.put("comments", 3);

        // Post 2
        JSONObject jsonObjectPost2 = new JSONObject();
        jsonObjectPost2.put("fbname", "Think Twice Code Once");
        jsonObjectPost2.put("content", "felling full");
        jsonObjectPost2.put("likes", 1);
        jsonObjectPost2.put("comments", 3);

        // Add post1, post2 jsonObject to profile jsonArray
        jsonArrayProfile.put(jsonObjectPost1);
        jsonArrayProfile.put(jsonObjectPost2);

        // Add profile jsonArray to jsonObject
        dataToSend.put("profile", jsonArrayProfile);

        Log.d("SUCCESS", "JSON: " + dataToSend.toString());

    } catch (final JSONException e) {
        Log.e("FAILED", "Json build error: " + e.getMessage());
    }

OUTPUT:

        {
            "profile":[
                {
                    "fbname":"Think Twice Code Once",
                    "content":"felling full",
                    "likes":1,
                    "comments":3
                },
                {
                    "fbname":"Think Twice Code Once",
                    "content":"felling full",
                    "likes":1,
                    "comments":3
                }
            ]
        }

Upvotes: 3

AlexGuerra
AlexGuerra

Reputation: 177

You have to create JSON objects of this way

JSONObject dataToSend = new JSONObject();
JSONArray arrayData = new JSONArray();
dataToSend.put("profile",arrayData);

And if you want to add JSON object to your JSONArray use this

arrayData.put(JSONObject1);
arrayData.put(JSONObject2);

Upvotes: 0

Alekhya
Alekhya

Reputation: 282

You can use following code to try it.

JSONArray ja = new JSONArray();
ja.put(dataToSend);

Upvotes: 0

Related Questions