Как получить конкретное значение по ключу из запроса JSON с помощью отражения Java - PullRequest
0 голосов
/ 21 декабря 2018

Отформатированные данные JSON

{  
 "userId":"123",
 "userName":"user",
 "age":12
}

Сверху запроса JSON я хочу получить только userName данные для хранения в базе данных с помощью Java Reflection.

Ответы [ 4 ]

0 голосов
/ 21 декабря 2018

Вы можете использовать библиотеку JSON для анализа строки и получения значения.

Базовый пример:

import org.json.JSONObject;

public class Main {

    public static void main(String[] args) {
        String jsonString = "{ \"userId\":\"123\", \"userName\":\"user\", \"age\":12 }";
        JSONObject jsonObject = new JSONObject(jsonString);
        String userName = jsonObject.getString("userName");
        System.out.println("UserName is: " + userName);
    }

}

Вывод:

UserName is: user

Примечание. Не забудьте добавить зависимость JSON в POM-файл.

<dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20160810</version>
</dependency>

Хотя доступны и другие библиотеки JSON, например jackson , google-gson и многое другое.Вы можете использовать любой из них.

0 голосов
/ 21 декабря 2018

Вы можете использовать приведенный ниже код для получения имени пользователя из ваших данных JSON.

JSONObject obj = new JSONObject(YOUR_JSON.toString());
String userName = obj.getString("userName");
0 голосов
/ 21 декабря 2018

Существует 2 решения:

  1. Самое простое: применить анализатор json, например: jackson, gson, json.org ... и получить имя пользователя из JsonNode.
  2. Если ваше требование - просто получить имя пользователя, вы можете использовать его для получения регулярных выражений

    "userName":"((\\"|[^"])+)"

    group(1) - ваш пользователь.

0 голосов
/ 21 декабря 2018

Вы можете использовать jackson json-анализатор.

Ниже приведен только пример кода (без гарантии, что он скомпилируется и будет работать для вас), который вы должны поместить в метод контроллера, получив запрос.

    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.ObjectWriter;

    //put below codes in your request handling method
    String jsonStr = req.getReader().lines().collect(Collectors.joining(
                        System.lineSeparator()));
    System.out.println(jsonStr);
    JsonNode rootNode = new ObjectMapper().readTree(new StringReader(jsonStr));
    JsonNode userName=rootNode.get("userName");
    String userNameStr=userName.asText();
    // store in data base

Подробнее о API можно узнать в https://fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/package-summary.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...