【问题标题】:How to create json object with key and value, where value is array如何使用键和值创建json对象,其中值是数组
【发布时间】:2019-09-09 21:14:14
【问题描述】:

我需要用键和值创建 json 对象,其中值是值数组。我怎么能那样做?

{"propName" : "favouriteObjectsIds", 
 "value": [
        "5c93f4cc3a6565000483248d",
        "5c93f7843a6565000483248e"
        ] 
}

我试过这样

public void add(String propertyName, String[] values){
        JsonArray array1 = new JsonArray();
        for(int i = 0; i < values.length; i++){
            array.add(values[i]);
        }

        JsonObject json = new JsonObject();
        json.addProperty("propName", propertyName);
        json.addProperty("value" ,array.toString());
    }

但是 array.toString() 给了我这样的输出

{"propName":"favouriteObjectsIds",
"value":"[\"5c93f4cc3a6565000483248d\",\"5c9b82ad24b33b0004227322\"]"}

【问题讨论】:

    标签: java android arrays json


    【解决方案1】:

    对于 JsonElements,您应该使用 .add 而不是 .addProperty

    public void add(String propertyName, String[] values){
    
        JsonArray array = new JsonArray();
        for(int i = 0; i < values.length; i++){
            array.add(values[i]);
        }
    
        JsonObject json = new JsonObject();
        json.addProperty("propName", propertyName);
        json.add("value" ,array);
    }
    

    【讨论】:

      【解决方案2】:

      您可以像这样使用 ArrayList 构建 json:

      public void add(String propertyName,ArrayList<String> list){
      
              Map map = new LinkedHashMap();
              map.put("propName", propertyName);
              map.put("value", list);
      
      
               JSONObject jObject = new JSONObject(map);
           //  convert JSONObject to JSON to String
               String  json = jObject.toString();
      
      }
      

      【讨论】:

        【解决方案3】:

        以上所有示例都创建了两个属性,每个属性都有一个键(名称)和一个值。第一个属性键是“propName”,其值为“favouriteObjectsIds”,第二个属性键是“value”,其值为“[”5c93f4cc3a6565000483248d”,“5c93f7843a6565000483248e”]”

        我怀疑你更喜欢这个:

        {"favouriteObjectsIds": [
            "5c93f4cc3a6565000483248d",
            "5c93f7843a6565000483248e"
            ] 
        }
        

        如果是这样,你可以这样做:

        String myJson = "{\"favouriteObjectsIds\":[\"5c93f4cc3a6565000483248d\",\"5c93f7843a6565000483248e\"]}"; 
        
        JSONObject jObject = new JSONObject(myJson );
        
        JSONArray jArray = jObject.getJSONArray("favouriteObjectsIds");
        

        【讨论】:

        • 不,事实并非如此。我需要这样的 json 格式,因为我的 rest api 需要这样一个补丁方法,但感谢您的响应。
        猜你喜欢
        • 2015-03-22
        • 2021-08-25
        • 2016-12-31
        • 2013-12-02
        • 1970-01-01
        • 2018-05-13
        • 1970-01-01
        相关资源
        最近更新 更多