@Override public Movie readFrom( Class<Movie> type, Type type1, Annotation[] antns, MediaType mt, MultivaluedMap<String, String> mm, InputStream in) throws IOException, WebApplicationException { Movie movie = new Movie(); JsonParser parser = Json.createParser(in); while (parser.hasNext()) { switch (parser.next()) { case KEY_NAME: String key = parser.getString(); parser.next(); switch (key) { case "id": movie.setId(parser.getInt()); break; case "name": movie.setName(parser.getString()); break; case "actors": movie.setActors(parser.getString()); break; default: break; } break; default: break; } } return movie; }
/** * Populates query tags list from given JSON string. All unknown tags are ignored. * * @param jsonData the string with JSON data * @throws Exception if JSON creation error occurs */ public void populateFromJson(String jsonData) throws TagsListParsingException { try (JsonParser parser = Json.createParser(new StringReader(jsonData))) { String key = null; while (parser.hasNext()) { JsonParser.Event event = parser.next(); switch (event) { case KEY_NAME: key = parser.getString(); break; case VALUE_NUMBER: tags.add(new QueryTag(key, parser.getInt())); break; case START_OBJECT: case END_OBJECT: break; default: logger.log(Level.SEVERE, "Unsupported tag passed in JSON string: " + jsonData); break; } } } catch (Exception e) { logger.log(Level.SEVERE, "Error happen while parsing JSON string: " + jsonData, e); throw new TagsListParsingException("Unable to decode tags list from URL", e); } }
/** main */ public static void main(String[] args) { String personJSONData = " {" + " \"name\": \"John\", " + " \"age\" : 35, " + " \"isMarried\" : true, " + " \"email\": null, " + " \"address\": { " + " \"street\": \"#234, Pembroke Road\", " + " \"city\": \"Dublin\", " + " \"zipCode\": \"D4\" " + " }, " + " \"phoneNumbers\": [\"89-923-2342\", \"89-213-2364\"] " + " }"; JsonParser parser = Json.createParser(new StringReader(personJSONData)); while (parser.hasNext()) { Event event = parser.next(); switch (event) { case START_OBJECT: System.out.print("{/*" + event + "*/ "); break; case END_OBJECT: System.out.print("}/*" + event + "*/ "); break; case START_ARRAY: System.out.print("[/*" + event + "*/ "); break; case END_ARRAY: System.out.print("]/*" + event + "*/ "); break; case VALUE_NUMBER: System.out.print(parser.getInt() + "/*" + event + "*/, "); break; case VALUE_STRING: System.out.print(parser.getString() + "/*" + event + "*/, "); break; case VALUE_TRUE: System.out.print("true/*" + event + "*/, "); break; case VALUE_FALSE: System.out.print("false/*" + event + "*/, "); break; case VALUE_NULL: System.out.print("null/*" + event + "*/, "); break; case KEY_NAME: System.out.print(parser.getString() + "/*" + event + "*/: "); break; default: System.out.print("Unrecognized Event : "); } } }