0

Formatted JSON Data

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

From Above JSON request I want to fetch only userName data to store in database by using Java Reflection.

Stack User
  • 21
  • 4

4 Answers4

1

You can use a JSON library to parse the string and retrieve the value.

Basic Example:

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);
    }

}

Output:

UserName is: user

Note: Don't forget to add json dependency in POM file.

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

Although more JSON libraries are available such as jackson, google-gson and many more. You can use any of them.

Nitin Bisht
  • 5,053
  • 4
  • 14
  • 26
0

You can use the jackson json parser.

Below is just a code sample(no guarantee that it will compile and work for you) you should put into your controler method receiving the request.

    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

You can refer to https://fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/package-summary.html for api details.

ZhaoGang
  • 4,491
  • 1
  • 27
  • 39
0

You can use below code to obtain username from your json data.

JSONObject obj = new JSONObject(YOUR_JSON.toString());
String userName = obj.getString("userName");
Nipun
  • 990
  • 1
  • 16
  • 25
0

There are 2 solutions:

  1. Simplest: Apply a json parser such as: jackson, gson, json.org... And get username from JsonNode.
  2. If your requirement is just get Username, you can use regex to retrieve it

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

    group(1) is your user.

hnbanh
  • 139
  • 5