在JSON

时间:2017-03-29 20:09:39

标签: java android json

我想得到的结果:

[
{"id":1,"name":"example1","description":"An example"},
{"id":2, "name":"example2","description":"Just another example"}, 
... ]

要向JSON添加新数据,我尝试了这个:

String jsonDataString = ALL MY JSON DATA HERE;
JSONObject mainObject = new JSONObject(jsonDataString);
JSONObject valuesObject = new JSONObject();
JSONArray list = new JSONArray();
valuesObject.put("id", "3");
valuesObject.put("name", "example3");
valuesObject.put("description", "Yet another example");
list.put(valuesObject);
mainObject.accumulate("", list);

但我没有得到正确的结果。

如何删除JSON数据取决于ID的值?

感谢的。

2 个答案:

答案 0 :(得分:1)

  1. 要构建新的JSONArray,您可以使用以下代码:

    try {
    
        JSONArray jsonArray = new JSONArray();
    
        // Object 1
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("id", 1);
        jsonObject1.put("name", "example1");
        jsonObject1.put("description", "An example");
    
        // Object 2
        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("id", 2);
        jsonObject2.put("name", "example2");
        jsonObject2.put("description", "Just another example");
    
        // Add Object 1 & 2 JSONArray
        jsonArray.put(jsonObject1);
        jsonArray.put(jsonObject2);
    
    
        Log.d("JSON", "JSON: " + jsonArray.toString());
    
    } catch (final JSONException e) {
        Log.e("FAILED", "Json parsing error: " + e.getMessage());
    }
    
  2. <强>输出:

    D/JSON: JSON: [{"id":1,"name":"example1","description":"An example"},{"id":2,"name":"example2","description":"Just another example"}]
    
    1. 要将新JSONObject添加到现有JSONArray,您可以使用以下代码:

      // Your Existing JSONArray
      // [{"id":1,"name":"example1","description":"An example"},
      //  {"id":2, "name":"example2","description":"Just another example"}]
      
      String jsonDataString = "[{\"id\":1,\"name\":\"example1\",\"description\":\"An example\"},{\"id\":2,\"name\":\"example2\",\"description\":\"Just another example\"}]";
      
      try {
      
          JSONArray jsonArray = new JSONArray(jsonDataString);
      
          // Object 3
          JSONObject jsonObject3 = new JSONObject();
          jsonObject3.put("id", 3);
          jsonObject3.put("name", "example3");
          jsonObject3.put("description", "Third example");
      
          // Add Object 3 JSONArray
          jsonArray.put(jsonObject3);
      
          Log.d("JSON", "JSON: " + jsonArray.toString());
      
      } catch (final JSONException e) {
          Log.e("FAILED", "Json parsing error: " + e.getMessage());
      }
      
    2. <强>输出:

      D/JSON: JSON: [{"id":1,"name":"example1","description":"An example"},{"id":2,"name":"example2","description":"Just another example"},{"id":3,"name":"example3","description":"Third example"}]
      
      1. 要从JSONObject移除JSONArray,您可以使用以下代码:

        // Your Existing JSONArray
        // [{"id":1,"name":"example1","description":"An example"},
        //  {"id":2,"name":"example2","description":"Just another example"},
        //  {"id":3,"name":"example3","description":"Third example"}]  
        
        String jsonDataString = "[{\"id\":1,\"name\":\"example1\",\"description\":\"An example\"},{\"id\":2,\"name\":\"example2\",\"description\":\"Just another example\"},{\"id\":3,\"name\":\"example3\",\"description\":\"Third example\"}]";
        
        try {
        
            JSONArray jsonArray = new JSONArray(jsonDataString);
        
            Log.d("JSON", "JSON before Remove: " + jsonArray.toString());
        
            // Remove Object id = 2
            int removeId = 2;
        
            for (int i = 0; i < jsonArray.length(); i++)
            {
                JSONObject object = jsonArray.getJSONObject(i);
        
                if (object.has("id") && !object.isNull("id")) {
        
                    int id = object.getInt("id");
        
                    if (id == removeId)
                    {
                        jsonArray.remove(i);
                        break;
                    }
                }
            }
        
            Log.d("JSON", "JSON After Remove: " + jsonArray.toString());
        
        } catch (final JSONException e) {
            Log.e("FAILED", "Json parsing error: " + e.getMessage());
        }
        
      2. <强>输出:

        D/JSON: JSON Before Remove: [{"id":1,"name":"example1","description":"An example"},{"id":2,"name":"example2","description":"Just another example"},{"id":3,"name":"example3","description":"Third example"}]
        
        D/JSON: JSON After Remove: [{"id":1,"name":"example1","description":"An example"},{"id":3,"name":"example3","description":"Third example"}]
        

        希望这会对你有所帮助。

答案 1 :(得分:0)

json的根对象是一个数组,所以你应该使用JSONArray,而不是JSONObject

String jsonDataString = ALL MY JSON DATA HERE;
JSONArray mainObject = new JSONArray(jsonDataString);
JSONObject valuesObject = new JSONObject();
valuesObject.put("id", "3");
valuesObject.put("name", "example3");
valuesObject.put("description", "Yet another example");
mainObject.put(valuesObject);