将list< mapobject>转换为jsonobject

uurv41yg  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(481)

我有一份 RequestBodyObject ,类似于:

List<RequestBodyObject> body = new ArrayList<>();
``` `RequestBodyObject` 是这样的:

Map<String, String> requestBodyElements;

我正在创建如下的hashmap:

HashMap<String, Object> params = new HashMap<>();

Map<String, String> requestBodyElements = new HashMap<>();
List<RequestBodyObject> body = new ArrayList<>();

requestBodyElements.put("xyz", "abc");
requestBodyElements.put("def", "pqr");

RequestBodyObject requestBodyObject = new RequestBodyObject();
requestBodyObject.setRequestBodyElements(requestBodyElements);
body.add(requestBodyObject);

params.put("key1", body);
params.put("key2", "value2");
现在我想将其转换为jsonobject,以作为 `REST` 呼叫
我正试图做这样的事情,但无法通过Map作为一个列表

private static JSONObject getJsonFromMap(Map<String, Object> map) throws JSONException {
JSONObject jsonData = new JSONObject();
for (String key : map.keySet()) {
Object value = map.get(key);
if (value instanceof Map) {
value = getJsonFromMap((Map<String, Object>) value);
}
jsonData.put(key, value);
}
return jsonData;
}

所需的jsonobject是:

{
"format":"HTML",
"requestBodyElements":[
{
"abc":"zyv",
"def":"ghi"
}]
}

我的功能可以使它像:

{
"format":"HTML",
"requestBodyElements":
{
"abc":"zyv",
"def":"ghi"
}
}

我需要改变信仰 `requestBodyElements` 到元素数组中。非常感谢您的帮助
6ojccjat

6ojccjat1#

有一个类jsonarray可以用来表示数组 [] json值。我想你可以考虑用它。代码可以如下所示:

private static JSONArray getJsonFromMap(Map<String, Object> map) {
    JSONObject jsonData = new JSONObject();
    for (String key : map.keySet()) {
        Object value = map.get(key);
        if (value instanceof Map<?, ?>) {
            value =  getJsonFromMap((Map<String, Object>) value);
        }
        jsonData.put(key, value);
    }
    JSONArray jsonArray = new JSONArray();
    jsonArray.add(jsonData);
    return jsonArray;
}

相关问题