如何使用键和值创建json对象,其中value是数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用键和值创建json对象,其中value是数组相关的知识,希望对你有一定的参考价值。

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

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

您应该使用.add而不是.addProperty作为JsonElements

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);
}
另一答案

你可以像这样用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();

}
另一答案

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

我怀疑你宁愿这样:

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

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

String myJson = "{"favouriteObjectsIds":["5c93f4cc3a6565000483248d","5c93f7843a6565000483248e"]}"; 

JSONObject jObject = new JSONObject(myJson );

JSONArray jArray = jObject.getJSONArray("favouriteObjectsIds");

以上是关于如何使用键和值创建json对象,其中value是数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swifty 动态创建具有多个键和值的 json 对象

如何在使用 Scala-Play Json 框架解析 Json 时获取键和值?

如何将 JSON 属性值转换为键和值数组

如何删除json对象键和值。?

如何使用 jq 中的流选项从 JSON 文件中检索键和值

如何从swift3中的JSON字符串中分别获取键和值?