Как преобразовать 2 массива ключей и значений Java String в объект json - PullRequest
0 голосов
/ 03 мая 2018

У меня есть 2 массива со строками.

String [] keys = {"key1", "key2",....}
String [] values = {"value1", "value2",....}

Их размер неизвестен, но они имеют одинаковый размер.

Я хочу сгенерировать из них объект Json, такой что:

{
"key1":"value1",
"key2":"value2",
...
} 

Что будет хорошей практикой для этого?

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Я бы сказал, поместил их в карту, а затем преобразовал в JSON, используя что-то вроде Gson.

public static void main(String[] args) {
    String[] keys = {"key1", "key2"};
    String[] values = {"value1", "value2"};

    Map<String, String> map = new HashMap<>();

    for (int i = 0; i < keys.length; i++) {
        map.put(keys[i], values[i]);
    }

    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    System.out.println(gson.toJson(map));

}
0 голосов
/ 03 мая 2018

В качестве опции вы можете создать Map и просто сериализовать его, используя ObjectMapper из библиотеки Джексона:

Map<String, String> map = new HashMap<>();
for (int i = 0; i < keys.length; ++i) {
    map.put(keys[i], values[i]);
}
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(map);
0 голосов
/ 03 мая 2018

Вы можете перебирать массивы, беря каждую пару key, value и добавлять их в объект JSON.

gson:

JsonObject jsonObject = new JsonObject();

for (int i = 0; i < keys.length; i ++) {
    jsonObject.addProperty(keys[i], values[i]);
}

Джексон:

ObjectNode jsonObject = JsonNodeFactory.instance.objectNode();

for (int i = 0; i < keys.length; i ++) {
    jsonObject.put(keys[i], values[i]);
}
...