如何通过使用Java Reflection从JSON请求中的键获取特定值

时间:2018-12-21 03:45:10

标签: java reflection

格式化的JSON数据

notifyItemChanged()

从上述JSON请求中,我只想使用Java Reflection提取{ "userId":"123", "userName":"user", "age":12 } 数据以存储在数据库中。

4 个答案:

答案 0 :(得分:0)

您可以使用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

您可以参考https://fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/package-summary.html以获得api详细信息。

答案 1 :(得分:0)

您可以使用以下代码从json数据中获取用户名。

JSONObject obj = new JSONObject(YOUR_JSON.toString());
String userName = obj.getString("userName");

答案 2 :(得分:0)

有2种解决方案:

  1. 最简单:应用json解析器,例如:jacksongsonjson.org ...并从JsonNode获取用户名。
  2. 如果只需要获取用户名,则可以使用正则表达式来获取它

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

    group(1)是您的用户。

答案 3 :(得分:0)

您可以使用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

注意:不要忘记在POM文件中添加json依赖项。

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

尽管有更多的JSON库可用,例如jacksongoogle-gson等。您可以使用其中任何一个。