|
||||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
Class Summary | |
---|---|
EmptyJsonHandler | Deprecated. use EmptyJsonContentHandler instead |
This package defines an API for writing and parsing JSON in a stream based manner.
final JSONHandlerFactory fct = getJSONHandlerFactory(); final Writer writer = new OutputStreamWriter(System.out, "UTF-8"); final DefaultJsonContentHandler handler = fct.createJsonContentHandler(writer); handler.startDocument(); handler.startObject(); handler.jsonMember("id", 3); handler.jsonMember("unique-name", "number three"); handler.startMember("preferences"); handler.jsonArray(new String[]{"portal", "portlet"}); handler.endMember(); handler.endObject(); handler.endDocument(); writer.flush(); writer.close();This would give the following output:
{ "id": 3, "unique-name": "number three", "preferences": ["portal", "portlet"] }
public void parse() throws Exception { final String json = "{\"id\":3,\"unique-name\":\"number three\",\"preferences\":[\"portal\",\"portlet\"]}"; final StringReader reader = new StringReader(json); final JsonParserReader parser = fct.createJsonParserReader(reader); List<SampleJsonObject> objects = null; SampleJsonObject current = null; String s; for (JsonParserReader.Entry e = parser.getNextEntry(); e != null; e = parser.getNextEntry()) { switch (e.getType()) { case START_OBJECT: current = new SampleJsonObject(); break; case START_MEMBER: s = e.readString(); if ("id".equals(s)) { e = parser.getNextEntry(); final Number number = e.readNumber(); current.setId(number.intValue()); } else if ("unique-name".equals(s)) { e = parser.getNextEntry(); final String uniqueName = e.readString(); current.setUniqueName(uniqueName); } else if ("preferences".equals(s)) { final Collection<String> preferences = parsePreferences(parser); current.setPreferences(preferences); } break; case END_OBJECT: objects.add(current); current = null; break; case START_DOCUMENT: objects = new ArrayList<SampleJsonObject>(); break; case END_DOCUMENT: System.out.println("Read these objects: " + objects); break; default: break; } } parser.close(); } private Collection<String> parsePreferences(final JsonParserReader parser) throws IOException { Collection<String> preferences = null; for (JsonParserReader.Entry e = parser.getNextEntry(); e != null; e = parser.getNextEntry()) { switch (e.getType()) { case START_ARRAY: preferences = new ArrayList<String>(); break; case END_ARRAY: // We finished return preferences; case START_STRING: preferences.add(e.readString()); break; } } return null; } static class SampleJsonObject { private int id; private String uniqueName; private Collection<String> preferences; /** * @return the id */ public int getId() { return id; } /** * @param id * the id to set */ public void setId(int id) { this.id = id; } /** * @return the uniqueName */ public String getUniqueName() { return uniqueName; } /** * @param uniqueName * the uniqueName to set */ public void setUniqueName(String uniqueName) { this.uniqueName = uniqueName; } /** * @return the preferences */ public Collection<String> getPreferences() { return preferences; } /** * @param preferences * the preferences to set */ public void setPreferences(Collection<String> preferences) { this.preferences = preferences; } /* * (non-Javadoc) * * @see java.lang.Object#toString() */
|
||||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |