READ JSON String in servlet

前端 未结 4 1694
我在风中等你
我在风中等你 2020-11-29 04:21

I am posting a jQuery AJAX POST to a servlet and the data is in the form of JSON String. Its getting posted successfully but on the Servlet side I need to read these key-val

相关标签:
4条回答
  • 2020-11-29 04:29

    If you just want to marshal it into a Map then try Jackson.

    ObjectMapper mapper = new ObjectMapper();
    ...
    Map<String, Object> data = mapper.readValue(request.getParameter("mydata"), Map.class);
    
    0 讨论(0)
  • 2020-11-29 04:31

    So here goes my example. I used json.JSONTokener to tokenize my String. ( Json-Java API from here https://github.com/douglascrockford/JSON-java )

    String sJsonString = "{\"name\":\"abc\",\"age\":\"21\"}";
    // Using JSONTokener to tokenize the String. This will create json Object or json Array 
    // depending on the type cast.
    json.JSONObject jsonObject = (json.JSONObject) new json.JSONTokener(sJsonString).nextValue();
    
    Iterator iterKey = jsonObject.keys(); // create the iterator for the json object.
    while(iterKey.hasNext()) {
        String jsonKey = (String)iterKey.next(); //retrieve every key ex: name, age
        String jsonValue = jsonObject.getString(jsonKey); //use key to retrieve value from 
    
        //This is a json object and will display the key value pair.
    
        System.out.println(jsonKey  + " --> " + jsonValue  );
    }
    

    Output:
    age-->21
    name-->abc

    0 讨论(0)
  • 2020-11-29 04:45

    You aren't actually parsing the json.

    JSONObject jObj = new JSONObject(request.getParameter("mydata")); // this parses the json
    Iterator it = jObj.keys(); //gets all the keys
    
    while(it.hasNext())
    {
        String key = it.next(); // get key
        Object o = jObj.get(key); // get value
        session.putValue(key, o); // store in session
    }
    
    0 讨论(0)
  • 2020-11-29 04:56

    if you use jQuery .ajax(), you need to read the HttpRequest input stream

        StringBuilder sb = new StringBuilder();
        BufferedReader br = request.getReader();
        String str;
        while( (str = br.readLine()) != null ){
            sb.append(str);
        }    
        JSONObject jObj = new JSONObject(sb.toString());
    
    0 讨论(0)
提交回复
热议问题