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

如何使用Java反射从JSON请求中通过键获取特定值,java,reflection,Java,Reflection,格式化JSON数据 { "userId":"123", "userName":"user", "age":12 } 从上面的JSON请求中,我只想通过Java反射获取要存储在数据库中的userName数据。您可以使用jacksonJSON解析器 下面只是一个代码示例(不保证它会编译并为您工作),您应该将其放入接收请求的controler方法中 import com.fasterxml.jackson.core.JsonProcessingException; impo

格式化JSON数据

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

从上面的JSON请求中,我只想通过Java反射获取要存储在数据库中的
userName
数据。

您可以使用
jackson
JSON解析器

下面只是一个代码示例(不保证它会编译并为您工作),您应该将其放入接收请求的controler方法中

    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的详细信息,请参阅。

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

JSONObject obj = new JSONObject(YOUR_JSON.toString());
String userName = obj.getString("userName");
有两种解决方案:

  • 最简单的:应用json解析器,例如:
    jackson
    gson
    json.org
    。。。并从JsonNode获取用户名
  • 如果您的需求是justgetusername,那么可以使用regex来检索它

    “用户名”:“((\\“\[^”])+)”

    组(1)
    是您的用户


  • 您可以使用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
    
    输出:

    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>
    
    
    org.json
    
    ,还有更多。您可以使用其中任何一个。

    请向我们展示您迄今为止从响应中获取数据的尝试。