如何将jsonobject添加到我想要的jsonarray中

时间:2017-03-29 16:40:35

标签: java android arrays json

我只能在这张图片的左侧添加jsonobj和json obj

enter image description here

但如果我想添加像右手这样的数据,我应该将哪些代码添加到我的代码中 (我想知道如何具体添加我要添加的json数组的标题) (来自ThinkTwiceCodeOnce的信用代码) 我的代码是......

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();
    }
}

3 个答案:

答案 0 :(得分:1)

使用select order_id from ordertable where cust_id in将个人资料dataToSend.put("profile", JSONArrayProfile)添加到JSONArray

这是工作代码。试试这个:

JSONObject

<强>输出:

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());
    }

答案 1 :(得分:0)

您可以使用以下代码进行尝试。

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

答案 2 :(得分:0)

您必须以这种方式创建JSON对象

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

如果您想将JSON对象添加到JSONArray,请使用此

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