Java Code Examples for javax.json.stream.JsonParser#next()

The following examples show how to use javax.json.stream.JsonParser#next() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ParsingJSONFiles.java    From Java-Data-Analysis with MIT License 6 votes vote down vote up
public static ArrayList getList(JsonParser parser) {
    ArrayList list = new ArrayList();
    Event event = parser.next();  // advance past START_ARRAY
    while (!event.equals(Event.END_ARRAY)) {
        if (event.equals(Event.VALUE_STRING)) {
            list.add(parser.getString());
            event = parser.next();
        } else if (event.equals(Event.START_OBJECT)) {
            HashMap<String,Object> map = getMap(parser);
            list.add(map);
            event = parser.next();
        } else if (event.equals(Event.START_ARRAY)) {
            ArrayList subList = getList(parser);   //  recursion
            list.add(subList);
            event = parser.next();
        }
    }
    return list;
}
 
Example 2
Source File: WeatherServiceTest.java    From tomee with Apache License 2.0 6 votes vote down vote up
private List<JsonItem> convertToMap(String s) {
    JsonParser expectedParser = Json.createParser(new StringReader(s));
    List<JsonItem> list = new ArrayList<>();
    while (expectedParser.hasNext()) {
        JsonParser.Event event = expectedParser.next();
        switch (event) {
            case KEY_NAME:
            case VALUE_STRING:
            case VALUE_NUMBER:
                list.add(new JsonItem(event, expectedParser.getValue().toString()));
                break;
            default:
                list.add(new JsonItem(event));
        }
    }
    return list;
}
 
Example 3
Source File: JsonXmlReader.java    From iaf with Apache License 2.0 6 votes vote down vote up
public boolean parse(String key, JsonParser parser) throws IOException, SAXException {
	Event event = parser.next();
	if (event.equals(Event.START_OBJECT)) {
		startElement("map", key);
		while ((event = parser.next())!=Event.END_OBJECT) {
			if (event!=Event.KEY_NAME) {
				throw new SAXException("expected key name at "+parser.getLocation());
			}
			key=parser.getString();
			parse(key,parser);
		};
		endElement("map");
	} else if (event==Event.END_ARRAY) {
		return false;
	} else if (event==Event.START_ARRAY) {
		startElement("array", key);
		while (parse(null,parser)); // parse array elements until the close
		endElement("array");
	} else {
		if (event==Event.VALUE_NULL) {
			simpleElement("null", key, null);
		} else {
			if (event==Event.VALUE_FALSE) {
				simpleElement("boolean", key, "false");
			} else {
				if (event==Event.VALUE_TRUE) {
					simpleElement("boolean", key, "true");
				} else {
					String value =parser.getString();
					if (event==Event.VALUE_NUMBER) {
						simpleElement("number", key, value);
					} else {
						simpleElement("string", key, value);
					}
				}
			}
		}
	}
	return true;
}
 
Example 4
Source File: MicroProfileMetricsIntegrationTest.java    From wildfly-camel with Apache License 2.0 6 votes vote down vote up
private void assertComplexMetricValue(CamelContext camelctx, String metricName, Number metricValue) throws Exception {
    String metrics = getMetrics();

    JsonParser parser = Json.createParser(new StringReader(metrics));
    Assert.assertTrue("Metrics endpoint content is empty", parser.hasNext());
    parser.next();

    JsonObject jsonObject = parser.getObject();
    JsonNumber result = null;
    String[] nameParts = metricName.split("\\.");
    for (int i = 0; i < nameParts.length; i++) {
        String jsonKey = i + 1 == nameParts.length ? nameParts[i] + ";camelContext=" + camelctx.getName() : nameParts[i];

        if (i + 1 == nameParts.length) {
            result = jsonObject.getJsonNumber(jsonKey);
            break;
        } else {
            jsonObject = jsonObject.getJsonObject(jsonKey);
        }
    }

    Assert.assertNotNull("Expected to find metric " + metricName, result);
    Assert.assertEquals("Expected metric " + metricName + " to have value " + metricValue, metricValue, result.intValue());
}
 
Example 5
Source File: Client.java    From webex-java-sdk with MIT License 6 votes vote down vote up
public <T> LinkedResponse<List<T>> paginate(final Class<T> clazz, URL url) {
    LinkedResponse.BodyCreator<List<T>> function = new LinkedResponse.BodyCreator<List<T>>() {
        @Override
        public List<T> create(InputStream istream) {
            JsonParser parser = Json.createParser(istream);
            Client.this.scrollToItemsArray(parser);

            List<T> result = new ArrayList<T>();
            for (JsonParser.Event event = parser.next();
                 event == JsonParser.Event.START_OBJECT;
                 event = parser.next()) {
                result.add(readObject(clazz, parser));
            }
            return result;
        }
    };

    try {
        return new LinkedResponse<List<T>>(this, url, function);
    } catch (IOException e) {
        throw new SparkException("io error", e);
    }
}
 
Example 6
Source File: MessageDecoder.java    From javaee7-websocket with MIT License 6 votes vote down vote up
@Override
public boolean willDecode(String string) {
    boolean decodes = false;
    /* Convert the message into a map */
    messageMap = new HashMap<>();
    JsonParser parser = Json.createParser(new StringReader(string));
    while (parser.hasNext()) {
        if (parser.next() == JsonParser.Event.KEY_NAME) {
            String key = parser.getString();
            parser.next();
            String value = parser.getString();
            messageMap.put(key, value);
        }
    }
    /* Check the kind of message and if all fields are included */
    Set keys = messageMap.keySet();
    if (keys.contains("type")) {
        switch (messageMap.get("type")) {
            case "betMatchWinner":
                if (keys.contains("name"))
                    decodes = true;
                break;
        }
    }
    return decodes;
}
 
Example 7
Source File: Index.java    From FHIR with Apache License 2.0 6 votes vote down vote up
private void parseFiles(JsonParser parser) {
    int i = 0;
    while (parser.hasNext()) {
        Event event = parser.next();
        switch (event) {
        case START_OBJECT:
            try {
                parseFile(parser);
            } catch (NullPointerException e) {
                log.log(Level.WARNING, "Skipping index entry " + i + " due to " +
                    "one or more missing required fields, beginning with: " + e.getMessage());
            }
            i++;
            break;
        case END_ARRAY:
            return;
        default:
            break;
        }
    }
}
 
Example 8
Source File: JsonQueryMessageDecoder.java    From datawave with Apache License 2.0 5 votes vote down vote up
private void addValueToMap(String key, JsonParser parser, MultivaluedMap<String,String> map) {
    boolean done = true; // By default we expect only a single value, but we could see an array.
    do {
        switch (parser.next()) {
            case VALUE_STRING:
            case VALUE_NUMBER:
                map.add(key, parser.getString());
                break;
            case VALUE_TRUE:
                map.add(key, Boolean.TRUE.toString());
                break;
            case VALUE_FALSE:
                map.add(key, Boolean.FALSE.toString());
                break;
            case VALUE_NULL:
                map.add(key, null);
                break;
            case START_ARRAY:
                // If we hit an array, then mark done=false so we'll iterate through the do..while loop until we see END_ARRAY
                done = false;
                break;
            case END_ARRAY:
                // We should only hit this after having hit a corresponding START_ARRAY. Indicate that we're done so we exit the do..while loop.
                done = true;
                break;
            case START_OBJECT:
                throw new IllegalStateException("Cannot decode nested objects.");
        }
    } while (!done);
}
 
Example 9
Source File: MicroProfileMetricsIntegrationTest.java    From wildfly-camel with Apache License 2.0 5 votes vote down vote up
private void assertSimpleMetricValue(CamelContext camelctx, String metricName, Number metricValue) throws Exception {
    String metrics = getMetrics();

    JsonParser parser = Json.createParser(new StringReader(metrics));
    Assert.assertTrue("Metrics endpoint content is empty", parser.hasNext());
    parser.next();

    JsonNumber jsonNumber = parser.getObject().getJsonNumber(metricName + ";camelContext=" + camelctx.getName());

    Assert.assertEquals("Expected to find metric" + metricName + " with value " + metricValue, metricValue, jsonNumber.intValue());
}
 
Example 10
Source File: BookDeserializer.java    From Java-EE-8-Sampler with MIT License 5 votes vote down vote up
@Override
public String deserialize(JsonParser parser, DeserializationContext ctx, Type rtType) {
    while (parser.hasNext()) {
        JsonParser.Event event = parser.next();
        if (event == JsonParser.Event.KEY_NAME) {
            String keyName = parser.getString();
            if (keyName.equals("id")) {
                return ctx.deserialize(String.class, parser);
            }
        }
        parser.next();
    }
    return "";
}
 
Example 11
Source File: CustomConfigSource.java    From microprofile-sandbox with Apache License 2.0 5 votes vote down vote up
public Map<String, String> getProperties() {
    Map<String, String> m = new HashMap<String, String>();
    String jsonData = this.readFile(this.fileLocation);
    JsonParser parser = Json.createParser(new StringReader(jsonData));
    String key = null;
    while (parser.hasNext()) {
        final Event event = parser.next();
        switch (event) {
        case KEY_NAME:
            key = parser.getString();
            break;
        case VALUE_STRING:
            String string = parser.getString();
            m.put(key, string);
            break;
        case VALUE_NUMBER:
            BigDecimal number = parser.getBigDecimal();
            m.put(key, number.toString());
            break;
        case VALUE_TRUE:
            m.put(key, "true");
            break;
        case VALUE_FALSE:
            m.put(key, "false");
            break;
        default:
            break;
        }
    }
    parser.close();
    return m;
}
 
Example 12
Source File: JsonUnitTest.java    From tutorials with MIT License 5 votes vote down vote up
@Test
public void whenUsingStreamingApiToQueryForSpecificProperty_thenExpectedValueIsReturned(
        ) throws IOException, ParseException {
    JsonParser jsonParser = Json.createParser(new StringReader(petshopJson));
    
    int count = 0;
    String result = null;
    
    while(jsonParser.hasNext()) {
        Event e = jsonParser.next();
        
        if (e == Event.KEY_NAME) {
            if(jsonParser.getString().equals("name")) {
               jsonParser.next();
               
               if(++count == 3) {
                   result = jsonParser.getString();
                   break;
               }
            }   
        }
    }
    
    assertEquals(
            "The query should return the 'name' property of the third pet from the list", 
            "Jake", 
            result);
}
 
Example 13
Source File: JsonpTest.java    From ee8-sandbox with Apache License 2.0 5 votes vote down vote up
@Test
public void testJsonParser() {
    String key = "";
    String value = "";
    JsonParser parser = Json.createParser(JsonpTest.class.getResourceAsStream("/person.json"));
    while (parser.hasNext()) {
        JsonParser.Event e = parser.next();
        System.out.print(e.name());

        switch (e) {
            case START_ARRAY:
                if (key.equals("phoneNumbers")) {
                    parser.skipArray();
                }
                break;
            case KEY_NAME:
                key = parser.getString();
                System.out.print(" - " + parser.getString());
                break;
            case VALUE_STRING:
                System.out.print(" - " + parser.getString());
                if ("name".equals(key)) {
                    value = parser.getString();
                }
        }

        System.out.println();
    }

    assertEquals("Duke", value);
}
 
Example 14
Source File: CustomConfigSource.java    From boost with Eclipse Public License 1.0 5 votes vote down vote up
public Map<String, String> getProperties() {
    Map<String, String> m = new HashMap<String, String>();
    String jsonData = this.readFile(this.fileLocation);
    JsonParser parser = Json.createParser(new StringReader(jsonData));
    String key = null;
    while (parser.hasNext()) {
        final Event event = parser.next();
        switch (event) {
        case KEY_NAME:
            key = parser.getString();
            break;
        case VALUE_STRING:
            String string = parser.getString();
            m.put(key, string);
            break;
        case VALUE_NUMBER:
            BigDecimal number = parser.getBigDecimal();
            m.put(key, number.toString());
            break;
        case VALUE_TRUE:
            m.put(key, "true");
            break;
        case VALUE_FALSE:
            m.put(key, "false");
            break;
        default:
            break;
        }
    }
    parser.close();
    return m;
}
 
Example 15
Source File: ActionMessage.java    From sample.daytrader7 with Apache License 2.0 5 votes vote down vote up
public void doDecoding(String jsonText) {
          
    String keyName = null;
    try 
    {
        // JSON parse
        JsonParser parser = Json.createParser(new StringReader(jsonText));
        while (parser.hasNext()) {
            JsonParser.Event event = parser.next();
            switch(event) {
            case KEY_NAME:
                keyName=parser.getString();
                break;
            case VALUE_STRING:
                if (keyName != null && keyName.equals("action")) {
                    decodedAction=parser.getString();
                }
                break;
            default:
                break;
            }
        }
    } catch (Exception e) {
        Log.error("ActionMessage:doDecoding(" + jsonText + ") --> failed", e);
    }
    
    if (Log.doTrace()) {
        if (decodedAction != null ) {
            Log.trace("ActionMessage:doDecoding -- decoded action -->" + decodedAction + "<--");
        } else {
            Log.trace("ActionMessage:doDecoding -- decoded action -->null<--");
        }
    }
    
}
 
Example 16
Source File: CustomConfigSource.java    From boost with Eclipse Public License 1.0 5 votes vote down vote up
public Map<String, String> getProperties() {
    Map<String, String> m = new HashMap<String, String>();
    String jsonData = this.readFile(this.fileLocation);
    JsonParser parser = Json.createParser(new StringReader(jsonData));
    String key = null;
    while (parser.hasNext()) {
        final Event event = parser.next();
        switch (event) {
        case KEY_NAME:
            key = parser.getString();
            break;
        case VALUE_STRING:
            String string = parser.getString();
            m.put(key, string);
            break;
        case VALUE_NUMBER:
            BigDecimal number = parser.getBigDecimal();
            m.put(key, number.toString());
            break;
        case VALUE_TRUE:
            m.put(key, "true");
            break;
        case VALUE_FALSE:
            m.put(key, "false");
            break;
        default:
            break;
        }
    }
    parser.close();
    return m;
}
 
Example 17
Source File: Client.java    From webex-java-sdk with MIT License 5 votes vote down vote up
private void scrollToItemsArray(JsonParser parser) {
    JsonParser.Event event;
    while (parser.hasNext()) {
        event = parser.next();
        if (event == JsonParser.Event.KEY_NAME &&  parser.getString().equals("items")) {
            break;
        }
    }

    event = parser.next();
    if (event != JsonParser.Event.START_ARRAY) {
        throw new SparkException("bad json");
    }
}
 
Example 18
Source File: Index.java    From FHIR with Apache License 2.0 5 votes vote down vote up
public void load(Reader reader) {
    JsonParser parser = PARSER_FACTORY.createParser(reader);

    String keyName = null;
    while (parser.hasNext()) {
        Event event = parser.next();
        switch (event) {
        case KEY_NAME:
            keyName = parser.getString();
            break;
        case VALUE_NUMBER:
            if ("index-version".equals(keyName)) {
                version = parser.getInt();
            }
        case START_ARRAY:
            if ("files".equals(keyName)) {
                parseFiles(parser);
            }
            break;
        default:
            break;
        }
    }

    parser.close();

    if (version < 1) {
        throw new IllegalStateException("index version was not set");
    }
}
 
Example 19
Source File: PingJSONP.java    From sample.daytrader7 with Apache License 2.0 4 votes vote down vote up
/**
 * this is the main method of the servlet that will service all get
 * requests.
 *
 * @param request
 *            HttpServletRequest
 * @param responce
 *            HttpServletResponce
 **/
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    try {
        res.setContentType("text/html");

        ServletOutputStream out = res.getOutputStream();
        
        hitCount++;
        
        // JSON generate
        StringWriter sw = new StringWriter();
        JsonGenerator generator = Json.createGenerator(sw);
         
        generator.writeStartObject();
        generator.write("initTime",initTime);
        generator.write("hitCount", hitCount);
        generator.writeEnd();
        generator.flush();
        
        String generatedJSON =  sw.toString();
        StringBuffer parsedJSON = new StringBuffer(); 
        
        // JSON parse
        JsonParser parser = Json.createParser(new StringReader(generatedJSON));
        while (parser.hasNext()) {
           JsonParser.Event event = parser.next();
           switch(event) {
              case START_ARRAY:
              case END_ARRAY:
              case START_OBJECT:
              case END_OBJECT:
              case VALUE_FALSE:
              case VALUE_NULL:
              case VALUE_TRUE:
                 break;
              case KEY_NAME:
                  parsedJSON.append(parser.getString() + ":");
                 break;
              case VALUE_STRING:
              case VALUE_NUMBER:
                  parsedJSON.append(parser.getString() + " ");
                 break;
           }
        }
        
        out.println("<html><head><title>Ping JSONP</title></head>"
                + "<body><HR><BR><FONT size=\"+2\" color=\"#000066\">Ping JSONP</FONT><BR>Generated JSON: " + generatedJSON + "<br>Parsed JSON: " + parsedJSON + "</body></html>");
    } catch (Exception e) {
        Log.error(e, "PingJSONP.doGet(...): general exception caught");
        res.sendError(500, e.toString());

    }
}
 
Example 20
Source File: Index.java    From FHIR with Apache License 2.0 4 votes vote down vote up
private void parseFile(JsonParser parser) {
    String fileName = null;
    String resourceType = null;
    String id = null;
    String url = null;
    String version = null;
    String kind = null;
    String type = null;

    String keyName = null;
    while (parser.hasNext()) {
        Event event = parser.next();
        switch (event) {
        case KEY_NAME:
            keyName = parser.getString();
            break;
        case VALUE_STRING:
            switch (keyName) {
            case "filename":
                fileName = parser.getString();
                break;
            case "resourceType":
                resourceType = parser.getString();
                break;
            case "id":
                id = parser.getString();
                break;
            case "url":
                url = parser.getString();
                break;
            case "version":
                version = parser.getString();
                break;
            case "kind":
                kind = parser.getString();
                break;
            case "type":
                type = parser.getString();
                break;
            }
            break;
        case END_OBJECT:
            entries.add(new Entry(fileName, resourceType, id, url, version, kind, type));
            return;
        default:
            break;
        }
    }
}