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

标签 java android arrays json

我只能添加 jsonobj 和 json obj,就像这张图片的左侧一样

enter image description here

但是如果我想添加像右侧这样的数据,我应该在我的代码中添加什么代码 (我想知道如何指定我要添加的 json 数组的 header ) (来自 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();
    }
}

最佳答案

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

输出:

        {
            "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
                }
            ]
        }

关于java - 如何将 jsonobject 添加到我想要的 jsonarray 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43099390/

相关文章:

Java Spring MVC + Hibernate - sessionFactory "unsatisfied dependency"错误

java - 类型 ImageView 的方法未定义

Android:支持同一屏幕尺寸类型内的多种屏幕尺寸

c - 如果我的指针越过数组边界会怎样?

javascript - 我怎样才能执行javascript中的所有行

arrays - 在 Go 中将字符串转换为单位数整数数组

java - 谁维护 Java 中的线程状态(从运行状态到等待/阻塞状态)

java - 使用 "su -c"燕子运行 Android NDK 可执行文件 printf()

java - 无法使用 Hibernate createQuery 实例化类

android - 在收到通知推送后将 Android 应用程序带到前台,例如应用程序启动器