Example usage for com.fasterxml.jackson.core JsonParser nextToken

List of usage examples for com.fasterxml.jackson.core JsonParser nextToken

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonParser nextToken.

Prototype

public abstract JsonToken nextToken() throws IOException, JsonParseException;

Source Link

Document

Main iteration method, which will advance stream enough to determine type of the next token, if any.

Usage

From source file:jeplus.gui.EPlusEditorPanel.java

public void validateJSON(final String json) {
    boolean valid = false;
    String msg = null;/*from  w ww  .  j  a  v  a2s  . c  om*/
    try {
        final JsonParser parser = new ObjectMapper().getJsonFactory().createJsonParser(json);
        while (parser.nextToken() != null) {
        }
        valid = true;
    } catch (JsonParseException jpe) {
        msg = jpe.getLocalizedMessage();
    } catch (IOException ioe) {
        msg = ioe.getLocalizedMessage();
    }
    if (!valid) {
        JOptionPane.showMessageDialog(this, "<html><p>JSON contents is not valid. Please check:</p><p>" + msg,
                "Success", JOptionPane.ERROR_MESSAGE);
    } else {
        JOptionPane.showMessageDialog(this, "JSON contents is valid!", "Success",
                JOptionPane.INFORMATION_MESSAGE);
    }
}

From source file:com.adobe.communities.ugc.migration.importer.MessagesImportServlet.java

private void importMessages(final SlingHttpServletRequest request, final JsonParser jsonParser,
        final Map<String, Object> messageModifiers) throws ServletException {

    if (!jsonParser.getCurrentToken().equals(JsonToken.START_ARRAY)) {
        throw new ServletException("unexpected starting token " + jsonParser.getCurrentToken().asString());
    }/*from w w  w  .  ja  va  2  s  . c  o m*/

    try {
        jsonParser.nextToken(); //presumably, we will advance to a "start object" token
        while (!jsonParser.getCurrentToken().equals(JsonToken.END_ARRAY)) {
            final Map<String, Map<String, Boolean>> recipientModifiers = new HashMap<String, Map<String, Boolean>>();
            final Map<String, Object> props = new HashMap<String, Object>();
            final Map<String, Object> messageModifier = new HashMap<String, Object>();
            List<FileDataSource> attachments = new ArrayList<FileDataSource>();
            String sender = "";
            jsonParser.nextToken(); //field name
            while (!jsonParser.getCurrentToken().equals(JsonToken.END_OBJECT)) {
                final String fieldName = jsonParser.getCurrentName();
                jsonParser.nextToken(); //value
                if (fieldName.equals("senderId")) {
                    sender = URLDecoder.decode(jsonParser.getValueAsString(), "UTF-8");
                } else if (fieldName.equals("added")) {
                    final Calendar calendar = new GregorianCalendar();
                    calendar.setTimeInMillis(jsonParser.getLongValue());
                    messageModifier.put("added", calendar);
                } else if (fieldName.equals("recipients")) {
                    // build the string for the "to" property and also create the modifiers we'll need later
                    final StringBuilder recipientString = new StringBuilder();
                    //iterate over each key (each being a recipient id)
                    if (jsonParser.getCurrentToken().equals(JsonToken.START_OBJECT)) {
                        jsonParser.nextToken(); // should get first recipientId
                        while (!jsonParser.getCurrentToken().equals(JsonToken.END_OBJECT)) {
                            final String recipientId = jsonParser.getCurrentName();
                            jsonParser.nextToken(); //start object
                            jsonParser.nextToken(); //first label
                            final Map<String, Boolean> interactionModifiers = new HashMap<String, Boolean>();
                            while (!jsonParser.getCurrentToken().equals(JsonToken.END_OBJECT)) {
                                final String label = jsonParser.getCurrentName();
                                jsonParser.nextToken();
                                final Boolean labelValue = jsonParser.getBooleanValue();
                                interactionModifiers.put(label, labelValue);
                                jsonParser.nextToken(); //next label or end object
                            }
                            try {
                                final String userPath = userPropertiesService.getAuthorizablePath(recipientId);
                                recipientModifiers.put(userPath, interactionModifiers);
                                recipientString.append(recipientId);
                            } catch (final RepositoryException e) {
                                // log the fact that a recipient specified in the json file doesn't exist in this
                                // environment
                                throw new ServletException(
                                        "A recipient specified in the migration file couldn't "
                                                + "be found in this environment",
                                        e);
                            }
                            jsonParser.nextToken(); // next recipientId or end object
                            if (jsonParser.getCurrentToken().equals(JsonToken.FIELD_NAME)) {
                                recipientString.append(';');
                            }
                        }
                        props.put("to", recipientString);
                        messageModifier.put("recipientDetails", recipientModifiers);
                    }
                } else if (fieldName.equals(ContentTypeDefinitions.LABEL_ATTACHMENTS)) {
                    UGCImportHelper.getAttachments(jsonParser, attachments);
                } else {
                    props.put(fieldName, URLDecoder.decode(jsonParser.getValueAsString(), "UTF-8"));
                }
                jsonParser.nextToken(); //either next field name or end object
            }
            final Random range = new Random();
            final String key = String.valueOf(range.nextInt(Integer.MAX_VALUE))
                    + String.valueOf(range.nextInt(Integer.MAX_VALUE));
            // we're going to temporarily overwrite the subject (to do a search) and need to track its initial value
            if (props.containsKey("subject")) {
                messageModifier.put("subject", props.get("subject"));
            } else {
                messageModifier.put("subject", "");
            }
            props.put("subject", key); //use subject as the search key
            messageModifiers.put(key, messageModifier);
            try {
                short result = messagingService.create(request.getResourceResolver(), request.getResource(),
                        sender, props, attachments,
                        clientUtilsFactory.getClientUtilities(xss, request, socialUtils));

                if (result != 200) {
                    throw new ServletException("Message sending failed. Return code was " + result);
                }
            } catch (final OperationException e) {
                throw new ServletException("Unable to create a message through the operation service", e);
            }
            jsonParser.nextToken(); //either END_ARRAY or START_OBJECT
        }

    } catch (final IOException e) {
        throw new ServletException("Encountered exception while parsing json content", e);
    }
}

From source file:com.tage.calcite.adapter.druid.DruidConnectionImpl.java

private void expectScalarField(JsonParser parser, String name) throws IOException {
    expect(parser, JsonToken.FIELD_NAME);
    if (!parser.getCurrentName().equals(name)) {
        throw new RuntimeException("expected field " + name + ", got " + parser.getCurrentName());
    }//from   w  ww.  j av  a2  s.c om
    final JsonToken t = parser.nextToken();
    switch (t) {
    case VALUE_NULL:
    case VALUE_FALSE:
    case VALUE_TRUE:
    case VALUE_NUMBER_INT:
    case VALUE_NUMBER_FLOAT:
    case VALUE_STRING:
        break;
    default:
        throw new RuntimeException("expected scalar field, got  " + t);
    }
}

From source file:name.gumartinm.weather.information.parser.JPOSForecastParser.java

private void getForecastWeatherDataObjects(final Forecast forecastWeatherData, final JsonParser jParser,
        final String fieldname) throws JsonParseException, IOException {

    if ("cod".equals(fieldname)) {
        final String stringCod = jParser.getText();
        forecastWeatherData.setCod(Long.valueOf(stringCod));
    }//from w ww. j a  va2s.  c om
    if ("message".equals(fieldname)) {
        forecastWeatherData.setMessage(jParser.getDoubleValue());
    }
    if ("city".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            final JsonToken nextToken = jParser.nextToken(); // move to
            // value
            if ("id".equals(namefield)) {
                forecastWeatherData.getCity().setId(jParser.getLongValue());
            }
            if ("name".equals(namefield)) {
                forecastWeatherData.getCity().setName(jParser.getText());
            }
            if ("coord".equals(namefield)) {
                if (nextToken == JsonToken.START_OBJECT) {
                    this.getForecastWeatherDataObjects(forecastWeatherData, jParser, namefield);
                }
            }
            if ("country".equals(namefield)) {
                forecastWeatherData.getCity().setCountry(jParser.getText());
            }
            if ("population".equals(namefield)) {
                forecastWeatherData.getCity().setPopulation(jParser.getLongValue());
            }
        }
    }
    if ("cnt".equals(fieldname)) {
        forecastWeatherData.setCnt(jParser.getIntValue());
    }
    if ("coord".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("lon".equals(namefield)) {
                forecastWeatherData.getCity().getCoord().setLon(jParser.getDoubleValue());
            }
            if ("lat".equals(namefield)) {
                forecastWeatherData.getCity().getCoord().setLat(jParser.getDoubleValue());
            }
        }
    }
    if ("list".equals(fieldname)) {
        final name.gumartinm.weather.information.model.forecastweather.List list = new name.gumartinm.weather.information.model.forecastweather.List();
        list.setTemp(new Temp());
        list.setWeather(new ArrayList<Weather>());
        forecastWeatherData.getList().add(list);
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            final JsonToken nextToken = jParser.nextToken(); // move to
            // value
            if ("dt".equals(namefield)) {
                list.setDt(jParser.getLongValue());
            }
            if ("temp".equals(namefield)) {
                if (nextToken == JsonToken.START_OBJECT) {
                    this.getForecastWeatherDataObjects(forecastWeatherData, jParser, namefield);
                }
            }
            if ("pressure".equals(namefield)) {
                list.setPressure(jParser.getDoubleValue());
            }
            if ("humidity".equals(namefield)) {
                list.setHumidity(jParser.getDoubleValue());
            }
            if ("weather".equals(namefield)) {
                if (nextToken == JsonToken.START_ARRAY) {
                    JsonToken tokenNext = jParser.nextToken();
                    while (tokenNext != JsonToken.END_ARRAY) {
                        if (tokenNext == JsonToken.START_OBJECT) {
                            this.getForecastWeatherDataObjects(forecastWeatherData, jParser, namefield);
                        }
                        tokenNext = jParser.nextToken();
                    }
                }
            }
            if ("speed".equals(namefield)) {
                list.setSpeed(jParser.getDoubleValue());
            }
            if ("deg".equals(namefield)) {
                list.setDeg(jParser.getDoubleValue());
            }
            if ("clouds".equals(namefield)) {
                list.setClouds(jParser.getDoubleValue());
            }
            if ("rain".equals(namefield)) {
                list.setRain(jParser.getDoubleValue());
            }
        }
    }
    if ("temp".equals(fieldname)) {
        final name.gumartinm.weather.information.model.forecastweather.List list = forecastWeatherData.getList()
                .get((forecastWeatherData.getList().size() - 1));
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("day".equals(namefield)) {
                list.getTemp().setDay(jParser.getDoubleValue());
            }
            if ("min".equals(namefield)) {
                list.getTemp().setMin(jParser.getDoubleValue());
            }
            if ("max".equals(namefield)) {
                list.getTemp().setMax(jParser.getDoubleValue());
            }
            if ("night".equals(namefield)) {
                list.getTemp().setNight(jParser.getDoubleValue());
            }
            if ("eve".equals(namefield)) {
                list.getTemp().setEve(jParser.getDoubleValue());
            }
            if ("morn".equals(namefield)) {
                list.getTemp().setMorn(jParser.getDoubleValue());
            }
        }
    }
    if ("weather".equals(fieldname)) {
        final name.gumartinm.weather.information.model.forecastweather.List list = forecastWeatherData.getList()
                .get((forecastWeatherData.getList().size() - 1));
        final Weather weather = new Weather();
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value

            if ("id".equals(namefield)) {
                weather.setId(jParser.getIntValue());
            }
            if ("main".equals(namefield)) {
                weather.setMain(jParser.getText());
            }
            if ("description".equals(namefield)) {
                weather.setDescription(jParser.getText());
            }
            if ("icon".equals(namefield)) {
                weather.setIcon(jParser.getText());
            }
        }
        list.getWeather().add(weather);
    }
}

From source file:com.tage.calcite.adapter.druid.DruidConnectionImpl.java

private void expectObjectField(JsonParser parser, String name) throws IOException {
    expect(parser, JsonToken.FIELD_NAME);
    if (!parser.getCurrentName().equals(name)) {
        throw new RuntimeException("expected field " + name + ", got " + parser.getCurrentName());
    }/*from ww  w . j a  v a 2s. c  om*/
    expect(parser, JsonToken.START_OBJECT);
    while (parser.nextToken() != JsonToken.END_OBJECT) {
        // empty
    }
}

From source file:com.google.openrtb.json.OpenRtbNativeJsonReader.java

protected void readNativeResponseField(JsonParser par, NativeResponse.Builder resp, String fieldName)
        throws IOException {
    switch (fieldName) {
    case "ver":
        resp.setVer(par.getText());/*from  ww w .j  a  v a  2  s  .co  m*/
        break;
    case "assets":
        for (startArray(par); endArray(par); par.nextToken()) {
            resp.addAssets(readRespAsset(par));
        }
        break;
    case "link":
        resp.setLink(readRespLink(par));
        break;
    case "imptrackers":
        for (startArray(par); endArray(par); par.nextToken()) {
            resp.addImptrackers(par.getText());
        }
        break;
    case "jstracker":
        resp.setJstracker(par.getText());
        break;
    default:
        readOther(resp, par, fieldName);
    }
}

From source file:net.floodlightcontroller.cli.commands.ShowSwitchCmd.java

/**
 * Parses a JSON string and decomposes all JSON arrays and objects. Stores the
 * resulting strings in a nested Map of string objects.
 * //from  w  w  w  .ja v a  2  s. c  o  m
 * @param jsonString
 */
@SuppressWarnings("unchecked")
private List<Map<String, Object>> parseJson(String jsonString) throws IOException {
    /* The Jackson JSON parser. */
    JsonParser jp;
    /* The Jackson JSON factory. */
    JsonFactory f = new JsonFactory();
    /* The Jackson object mapper. */
    ObjectMapper mapper = new ObjectMapper();
    /* A list of JSON data objects retrieved by using the REST API. */
    List<Map<String, Object>> jsonData = new ArrayList<Map<String, Object>>();

    try {
        jp = f.createJsonParser(jsonString);
    } catch (JsonParseException e) {
        throw new IOException(e);
    }

    // Move to the first object in the array.
    jp.nextToken();
    if (jp.getCurrentToken() != JsonToken.START_ARRAY) {
        throw new IOException("Expected START_ARRAY instead of " + jp.getCurrentToken());
    }

    // Retrieve the information from JSON
    while (jp.nextToken() == JsonToken.START_OBJECT) {
        jsonData.add(mapper.readValue(jp, Map.class));
    }

    // Close the JSON parser.
    jp.close();

    // Return.
    return jsonData;
}

From source file:com.google.openrtb.json.OpenRtbNativeJsonReader.java

protected void readRespLinkField(JsonParser par, NativeResponse.Link.Builder link, String fieldName)
        throws IOException {
    switch (fieldName) {
    case "url":
        link.setUrl(par.getText());/*w  w  w  .jav a 2  s .  c om*/
        break;
    case "clicktrackers":
        for (startArray(par); endArray(par); par.nextToken()) {
            link.addClicktrackers(par.getText());
        }
        break;
    case "fallback":
        link.setFallback(par.getText());
        break;
    default:
        readOther(link, par, fieldName);
    }
}

From source file:com.addthis.bundle.value.ValueDeserializer.java

@Override
public ValueObject deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {
    JsonToken t = jp.getCurrentToken();//w  w  w  .  j  a v a  2s . c om
    switch (t) {
    case VALUE_TRUE:
    case VALUE_FALSE:
    case VALUE_STRING:
        return jp.readValueAs(ValueString.class);
    case VALUE_NUMBER_INT:
        return jp.readValueAs(ValueLong.class);
    case VALUE_NUMBER_FLOAT:
        return jp.readValueAs(ValueDouble.class);
    case START_ARRAY:
        return jp.readValueAs(ValueArray.class);
    case START_OBJECT:
    case FIELD_NAME:
        return jp.readValueAs(ValueMap.class);
    case END_OBJECT:
        // calling jp.readValueAs here will return null rather than an empty map, so make empty map in tokens
        jp.nextToken();
        ObjectNode objectNode = ctxt.getNodeFactory().objectNode();
        JsonParser emptyObjectParser = jp.getCodec().treeAsTokens(objectNode);
        emptyObjectParser.nextToken();
        return emptyObjectParser.readValueAs(ValueMap.class);
    case VALUE_EMBEDDED_OBJECT:
    default:
        throw ctxt.mappingException(handledType());
    }
}

From source file:com.google.openrtb.json.OpenRtbNativeJsonReader.java

/**
 * Desserializes a {@link NativeRequest} from JSON, with a provided {@link JsonParser}
 * which allows several choices of input and encoding.
 *///  w w w. j  a  va  2  s .  c o  m
public final NativeRequest.Builder readNativeRequest(JsonParser par) throws IOException {
    if (emptyToNull(par)) {
        return null;
    }
    NativeRequest.Builder req = NativeRequest.newBuilder();
    boolean rootNativeField = false;
    boolean firstField = true;
    for (startObject(par); endObject(par); par.nextToken()) {
        String fieldName = getCurrentName(par);
        if (par.nextToken() != JsonToken.VALUE_NULL) {
            if (firstField) {
                firstField = false;
                if ((rootNativeField = "native".equals(fieldName)) == true) {
                    startObject(par);
                    fieldName = getCurrentName(par);
                    par.nextToken();
                }
            }
            if (par.getCurrentToken() != JsonToken.VALUE_NULL) {
                readNativeRequestField(par, req, fieldName);
            }
        }
    }
    if (rootNativeField && !endObject(par)) {
        par.nextToken();
    }
    return req;
}