为了账号安全,请及时绑定邮箱和手机立即绑定

JSON Volley PUT 请求覆盖一切

JSON Volley PUT 请求覆盖一切

米琪卡哇伊 2022-07-20 10:51:07
我正在尝试使用 Volley for Android 更新远程 JSON 值。问题是下面的代码完全覆盖了整个 JSON 对象。文件位于此处:https ://api.myjson.com/bins/kubxi原始 JSON 文件如下所示:{  "females": [    {      "id": 1,      "name": "Name One",      "actions": [        {          "action_1": 1,          "action_2": 2,          "action_3": 3        }      ]    },    {      "id": 2,      "name": "Name Two",      "actions": [        {          "action_1": 4,          "action_2": 5,          "action_3": 6        }      ]    }  ]}Java 代码private void sendRequest() {        RequestQueue queue = Volley.newRequestQueue(this);        final JSONObject jsonObject = new JSONObject();        String url ="https://api.myjson.com/bins/kubxi"; // Remote JSON file        try {            jsonObject.put("action_1", 123);            jsonObject.put("action_2", 456);            jsonObject.put("action_3", 789);        } catch (JSONException e) {            Log.d("Exception", e.toString());        }        JsonObjectRequest putRequest = new JsonObjectRequest(Request.Method.PUT, url, jsonObject,                new Response.Listener<JSONObject>()                {                    @Override                    public void onResponse(JSONObject response) {                        Log.d("Response", response.toString());                    }                },                new Response.ErrorListener()                {                    @Override                    public void onErrorResponse(VolleyError error) {                        Log.d("Error.Response", error.toString());                    }                }        )使用此代码后,JSON 文件如下所示:{    "action_1": 123,    "action_2": 456,    "action_3": 789}我期望代码仅将 action_1、action_2 和 action_3 上的值从 1、2、3 更新为 123、456、789。建议将不胜感激!
查看完整描述

1 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

要更新 json 文件中的特定值,您可以这样做:


首先将您的originaljson 放入 String :


  String jsonString ="{

  "females": [

    {

      "id": 1,

      "name": "Name One",

      "actions": [

        {

          "action_1": 1,

          "action_2": 2,

          "action_3": 3

        }

      ]

    }

  ]

}";

接下来,将此字符串传入JsonObject:


   JSONObject jObject  = new JSONObject(jsonString);//passing string to jsonobject

         JSONArray jsonArray = jObject.getJSONArray("females");

        for (int i = 0; i < jsonArray.length(); i++) {

         JSONObject object = jsonArray.getJSONObject(i);

         JSONArray jsonObject= object.getJSONArray("actions"); //getting action 

array

       for (int j = 0; j < jsonObject.length(); j++) {

         JSONObject object1 = jsonObject.getJSONObject(j);


           object1.put("action_1", 123); //here you are putting value to action_1

                    object1.put("action_2", 456);

                    object1.put("action_3", 789);

        }

        } 

然后将其发送jsonObject到您的服务器。


查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信