Example usage for com.fasterxml.jackson.core JsonToken END_OBJECT

List of usage examples for com.fasterxml.jackson.core JsonToken END_OBJECT

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core JsonToken END_OBJECT.

Prototype

JsonToken END_OBJECT

To view the source code for com.fasterxml.jackson.core JsonToken END_OBJECT.

Click Source Link

Document

END_OBJECT is returned when encountering '}' which signals ending of an Object value

Usage

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  www  .  j av a  2s .c o m
    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:org.labkey.freezerpro.export.FreezerProCommandResonse.java

/**
 * Parse the array of objects into a list of row maps
 * @param parser/* w  w  w  .  j a  v a  2s .  c  om*/
 * @param data
 */
protected void parseDataArray(JsonParser parser, List<Map<String, Object>> data) throws IOException {
    expectArrayStart(parser);
    JsonToken token = parser.nextToken();

    while (token != JsonToken.END_ARRAY) {
        if (token == JsonToken.END_OBJECT)
            break;

        Map node = _parser.readValueAs(Map.class);
        Map<String, Object> row = new HashMap<>();
        for (Object key : node.keySet()) {
            String fieldName = String.valueOf(key);
            if (FreezerProExport.exportField(fieldName))
                row.put(translateFieldName(fieldName), node.get(key));
        }
        data.add(row);
        token = _parser.nextToken();

        if (token == JsonToken.END_ARRAY)
            break;
    }
}

From source file:com.cinnober.msgcodec.json.TypeScannerJsonParserTest.java

@Test
public void testNested1() throws IOException {
    JsonParser p = new JsonFactory()
            .createParser("{\"a\":{\"c\":2, \"$type\":\"y\", \"d\":2.1}, \"$type\":\"x\", \"b\":1.1}");
    p.nextToken(); // START_OBJECT
    p.nextToken(); // FIELD_NAME
    TypeScannerJsonParser p2 = new TypeScannerJsonParser(p);
    assertEquals("x", p2.findType());

    assertNextField("a", p2);
    assertEquals(JsonToken.START_OBJECT, p2.nextToken());
    // start nested object
    p2.nextToken(); // FIELD_NAME
    assertEquals("y", p2.findType());
    assertNextField("c", p2);
    assertNextIntValue(2, p2);/*from   w  w w  .jav  a  2s  .c o  m*/
    assertNextField("d", p2);
    assertNextFloatValue(2.1, p2);
    assertEquals(JsonToken.END_OBJECT, p2.nextToken());
    // end nested object

    assertNextField("b", p2);
    assertNextFloatValue(1.1, p2);

    assertEquals(JsonToken.END_OBJECT, p2.nextToken());
    assertNull(p2.nextToken());
}

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

private void getCurrentWeatherDataObjects(final Current currentWeatherData, final JsonParser jParser,
        final String fieldname) throws JsonParseException, IOException {
    if ("coord".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("lon".equals(namefield)) {
                currentWeatherData.getCoord().setLon(jParser.getDoubleValue());
            }/*  ww w. j a va  2  s  .c o m*/
            if ("lat".equals(namefield)) {
                currentWeatherData.getCoord().setLat(jParser.getDoubleValue());
            }
        }
    }
    if ("sys".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("message".equals(namefield)) {
                currentWeatherData.getSys().setMessage(jParser.getDoubleValue());
            }
            if ("country".equals(namefield)) {
                currentWeatherData.getSys().setCountry(jParser.getValueAsString());
            }
            if ("sunrise".equals(namefield)) {
                currentWeatherData.getSys().setSunrise(jParser.getValueAsLong());
            }
            if ("sunset".equals(namefield)) {
                currentWeatherData.getSys().setSunset(jParser.getValueAsLong());
            }
        }
    }
    if ("weather".equals(fieldname)) {
        final Weather weather = new Weather();
        currentWeatherData.getWeather().add(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());
            }

        }
    }
    if ("base".equals(fieldname)) {
        currentWeatherData.setBase(jParser.getText());
    }
    if ("main".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("temp".equals(namefield)) {
                currentWeatherData.getMain().setTemp(jParser.getDoubleValue());
            }
            if ("temp_min".equals(namefield)) {
                currentWeatherData.getMain().setTemp_min(jParser.getDoubleValue());
            }
            if ("temp_max".equals(namefield)) {
                currentWeatherData.getMain().setTemp_max(jParser.getDoubleValue());
            }
            if ("pressure".equals(namefield)) {
                currentWeatherData.getMain().setPressure(jParser.getDoubleValue());
            }
            if ("sea_level".equals(namefield)) {
                currentWeatherData.getMain().setSea_level(jParser.getDoubleValue());
            }
            if ("grnd_level".equals(namefield)) {
                currentWeatherData.getMain().setGrnd_level(jParser.getDoubleValue());
            }
            if ("humidity".equals(namefield)) {
                currentWeatherData.getMain().setHumidity(jParser.getDoubleValue());
            }
        }
    }
    if ("wind".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("speed".equals(namefield)) {
                currentWeatherData.getWind().setSpeed(jParser.getDoubleValue());
            }
            if ("deg".equals(namefield)) {
                currentWeatherData.getWind().setDeg(jParser.getDoubleValue());
            }
        }
    }
    if ("clouds".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("all".equals(namefield)) {
                currentWeatherData.getClouds().setAll(jParser.getDoubleValue());
            }
        }
    }
    if ("dt".equals(fieldname)) {
        currentWeatherData.setDt(jParser.getLongValue());
    }
    if ("rain".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("3h".equals(namefield)) {
                currentWeatherData.getRain().set3h(jParser.getDoubleValue());
            }
        }
    }
    if ("snow".equals(fieldname)) {
        while (jParser.nextToken() != JsonToken.END_OBJECT) {
            final String namefield = jParser.getCurrentName();
            jParser.nextToken(); // move to value
            if ("3h".equals(namefield)) {
                currentWeatherData.getSnow().set3h(jParser.getDoubleValue());
            }
        }
    }
    if ("id".equals(fieldname)) {
        currentWeatherData.setId(jParser.getLongValue());
    }
    if ("name".equals(fieldname)) {
        currentWeatherData.setName(jParser.getText());
    }
    if ("cod".equals(fieldname)) {
        currentWeatherData.setCod(jParser.getIntValue());
    }
}

From source file:com.cedarsoft.serialization.serializers.jackson.ApplicationSerializer.java

@Nonnull
@Override/*from  www  . j a  v  a  2  s .c  om*/
public Application deserialize(@Nonnull JsonParser deserializeFrom, @Nonnull Version formatVersion)
        throws VersionException, IOException, JsonProcessingException {
    //name
    JacksonParserWrapper parserWrapper = new JacksonParserWrapper(deserializeFrom);
    parserWrapper.nextToken();
    parserWrapper.verifyCurrentToken(JsonToken.FIELD_NAME);
    String currentName = parserWrapper.getCurrentName();

    if (!PROPERTY_NAME.equals(currentName)) {
        throw new JsonParseException(
                "Invalid field. Expected <" + PROPERTY_NAME + "> but was <" + currentName + ">",
                parserWrapper.getCurrentLocation());
    }
    parserWrapper.nextToken();
    String name = parserWrapper.getText();
    //version
    Version version = deserialize(Version.class, PROPERTY_VERSION, formatVersion, deserializeFrom);
    //Finally closing element
    parserWrapper.nextToken(JsonToken.END_OBJECT);
    //Constructing the deserialized object
    return new Application(name, version);
}

From source file:com.cedarsoft.serialization.serializers.jackson.HashSerializer.java

@Nonnull
@Override/*from  w  w  w  .j a  v  a  2s. c  om*/
public Hash deserialize(@Nonnull JsonParser deserializeFrom, @Nonnull Version formatVersion)
        throws VersionException, IOException, JsonProcessingException {
    JacksonParserWrapper parserWrapper = new JacksonParserWrapper(deserializeFrom);
    parserWrapper.nextToken();
    parserWrapper.verifyCurrentToken(JsonToken.FIELD_NAME);
    String currentName1 = parserWrapper.getCurrentName();

    if (!PROPERTY_ALGORITHM.equals(currentName1)) {
        throw new JsonParseException(
                "Invalid field. Expected <" + PROPERTY_ALGORITHM + "> but was <" + currentName1 + ">",
                parserWrapper.getCurrentLocation());
    }
    parserWrapper.nextToken();
    Algorithm algorithm = Algorithm.getAlgorithm(deserializeFrom.getText());

    parserWrapper.nextToken();
    parserWrapper.verifyCurrentToken(JsonToken.FIELD_NAME);
    String currentName = parserWrapper.getCurrentName();

    if (!PROPERTY_VALUE.equals(currentName)) {
        throw new JsonParseException(
                "Invalid field. Expected <" + PROPERTY_VALUE + "> but was <" + currentName + ">",
                parserWrapper.getCurrentLocation());
    }
    parserWrapper.nextToken();
    String hex = deserializeFrom.getText();

    parserWrapper.nextToken(JsonToken.END_OBJECT);

    return Hash.fromHex(algorithm, hex);
}

From source file:KV78Tester.java

public String[] parseLines(BufferedReader in) throws Exception {
    JsonFactory f = new JsonFactory();
    JsonParser jp = f.createJsonParser(in);
    ArrayList<String> lines = new ArrayList<String>();
    jp.nextToken();//from ww w  .  j  a  v a  2s . com
    while (jp.nextToken() != JsonToken.END_OBJECT) {
        String line = jp.getCurrentName();
        lines.add(line);
        jp.nextToken();
    }
    jp.close();
    in.close();
    return lines.toArray(new String[lines.size()]);
}

From source file:net.troja.eve.crest.CrestDataProcessor.java

private <T> String processData(final CrestApiProcessor<T> processor, final CrestContainer<T> container,
        final String data) {
    String next = null;//from ww  w.  ja va 2 s.  co m
    try {
        final JsonFactory parserFactory = new JsonFactory();
        final JsonParser jsonParser = parserFactory.createParser(data);
        jsonParser.nextToken();
        while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
            final String fieldname = jsonParser.getCurrentName();
            jsonParser.nextToken();
            switch (fieldname) {
            case "totalCount":
                container.setTotalCount(jsonParser.getIntValue());
                break;
            case "pageCount":
                container.setPageCount(jsonParser.getIntValue());
                break;
            case "items":
                processItems(processor, container, jsonParser);
                break;
            case "next":
                next = processNext(jsonParser);
                break;
            default:
                break;
            }
        }
    } catch (final IOException e) {
        if (LOGGER.isWarnEnabled()) {
            LOGGER.warn("Problems while parsing json data: " + e.getMessage(), e);
        }
    }
    return next;
}

From source file:org.commonjava.maven.atlas.graph.jackson.ProjectRelationshipDeserializer.java

@Override
public T deserialize(final JsonParser jp, final DeserializationContext ctx)
        throws JsonProcessingException, IOException {
    Map<String, Object> ast = new HashMap<String, Object>();
    Map<String, JsonLocation> locations = new HashMap<String, JsonLocation>();

    JsonToken token = jp.getCurrentToken();
    String currentField = null;//  www .jav a  2  s  .  c o m
    List<String> currentArry = null;

    Logger logger = LoggerFactory.getLogger(getClass());
    do {
        //                logger.info( "Token: {}", token );
        switch (token) {
        case START_ARRAY: {
            //                        logger.info( "Starting array for field: {}", currentField );
            currentArry = new ArrayList<String>();
            break;
        }
        case END_ARRAY:
            //                        logger.info( "Ending array for field: {}", currentField );
            locations.put(currentField, jp.getCurrentLocation());
            ast.put(currentField, currentArry);
            currentArry = null;
            break;
        case FIELD_NAME:
            currentField = jp.getCurrentName();
            break;
        case VALUE_STRING:
            if (currentArry != null) {
                currentArry.add(jp.getText());
            } else {
                locations.put(currentField, jp.getCurrentLocation());
                ast.put(currentField, jp.getText());
            }
            break;
        case VALUE_NUMBER_INT:
            locations.put(currentField, jp.getCurrentLocation());
            ast.put(currentField, jp.getIntValue());
            break;
        case VALUE_NUMBER_FLOAT:
            locations.put(currentField, jp.getCurrentLocation());
            ast.put(currentField, jp.getFloatValue());
            break;
        case VALUE_TRUE:
            locations.put(currentField, jp.getCurrentLocation());
            ast.put(currentField, Boolean.TRUE);
            break;
        case VALUE_FALSE:
            locations.put(currentField, jp.getCurrentLocation());
            ast.put(currentField, Boolean.FALSE);
            break;
        }

        token = jp.nextToken();
    } while (token != JsonToken.END_OBJECT);

    StringBuilder sb = new StringBuilder();
    sb.append("AST is:");
    for (String field : ast.keySet()) {
        Object value = ast.get(field);
        sb.append("\n  ").append(field).append(" = ");
        if (value == null) {
            sb.append("null");
        } else {
            sb.append(value).append("  (type: ").append(value.getClass().getSimpleName()).append(")");
        }
    }

    logger.debug(sb.toString());

    final RelationshipType type = RelationshipType.getType((String) ast.get(RELATIONSHIP_TYPE));

    final String uri = (String) ast.get(POM_LOCATION_URI);
    URI pomLocation;
    if (uri == null) {
        pomLocation = RelationshipUtils.POM_ROOT_URI;
    } else {
        try {
            pomLocation = new URI(uri);
        } catch (final URISyntaxException e) {
            throw new JsonParseException("Invalid " + POM_LOCATION_URI + ": '" + uri + "': " + e.getMessage(),
                    locations.get(POM_LOCATION_URI), e);
        }
    }

    Collection<URI> sources = new HashSet<URI>();
    List<String> srcs = (List<String>) ast.get(SOURCE_URIS);
    if (srcs != null) {
        for (String u : srcs) {
            try {
                sources.add(new URI(u));
            } catch (URISyntaxException e) {
                throw new JsonParseException("Failed to parse source URI: " + u, locations.get(SOURCE_URIS));
            }
        }
    }

    String decl = (String) ast.get(DECLARING_REF);
    final ProjectVersionRef declaring = SimpleProjectVersionRef.parse(decl);

    String tgt = (String) ast.get(TARGET_REF);
    Integer index = (Integer) ast.get(INDEX);
    if (index == null) {
        index = 0;
    }

    // handle null implicitly by comparing to true.
    boolean managed = Boolean.TRUE.equals(ast.get(MANAGED));
    boolean inherited = Boolean.TRUE.equals(ast.get(INHERITED));
    boolean mixin = Boolean.TRUE.equals(ast.get(MIXIN));
    boolean optional = Boolean.TRUE.equals(ast.get(OPTIONAL));

    ProjectRelationship<?, ?> rel = null;
    switch (type) {
    case DEPENDENCY: {
        final ArtifactRef target = SimpleArtifactRef.parse(tgt);

        String scp = (String) ast.get(SCOPE);
        final DependencyScope scope;
        if (scp == null) {
            scope = DependencyScope.compile;
        } else {
            scope = DependencyScope.getScope(scp);
        }

        rel = new SimpleDependencyRelationship(sources, pomLocation, declaring, target, scope, index, managed,
                inherited, optional);
        break;
    }
    case EXTENSION: {
        final ProjectVersionRef target = SimpleProjectVersionRef.parse(tgt);

        rel = new SimpleExtensionRelationship(sources, pomLocation, declaring, target, index, inherited);
        break;
    }
    case PARENT: {
        final ProjectVersionRef target = SimpleProjectVersionRef.parse(tgt);

        rel = new SimpleParentRelationship(sources, declaring, target);
        break;
    }
    case PLUGIN: {
        final ProjectVersionRef target = SimpleProjectVersionRef.parse(tgt);

        Boolean report = (Boolean) ast.get(REPORTING);
        rel = new SimplePluginRelationship(sources, pomLocation, declaring, target, index, managed,
                Boolean.TRUE.equals(report), inherited);
        break;
    }
    case PLUGIN_DEP: {
        String plug = (String) ast.get(PLUGIN_REF);
        if (plug == null) {
            throw new JsonParseException(
                    "No plugin reference (field: " + PLUGIN_REF + ") found in plugin-dependency relationship!",
                    jp.getCurrentLocation());
        }

        final ProjectRef plugin = SimpleProjectRef.parse(plug);
        final ArtifactRef target = SimpleArtifactRef.parse(tgt);

        rel = new SimplePluginDependencyRelationship(sources, pomLocation, declaring, plugin, target, index,
                managed, inherited);
        break;
    }
    case BOM: {
        final ProjectVersionRef target = SimpleProjectVersionRef.parse(tgt);

        rel = new SimpleBomRelationship(sources, pomLocation, declaring, target, index, inherited, mixin);
        break;
    }
    }

    return (T) rel;
}

From source file:com.cedarsoft.serialization.serializers.jackson.ExtensionSerializer.java

@Nonnull
@Override//from w  ww  .j  a va2  s. c o  m
public Extension deserialize(@Nonnull JsonParser deserializeFrom, @Nonnull Version formatVersion)
        throws VersionException, IOException, JsonProcessingException {
    //delimiter
    JacksonParserWrapper parserWrapper = new JacksonParserWrapper(deserializeFrom);
    parserWrapper.nextToken();
    parserWrapper.verifyCurrentToken(JsonToken.FIELD_NAME);
    String currentName1 = parserWrapper.getCurrentName();

    if (!PROPERTY_DELIMITER.equals(currentName1)) {
        throw new JsonParseException(
                "Invalid field. Expected <" + PROPERTY_DELIMITER + "> but was <" + currentName1 + ">",
                parserWrapper.getCurrentLocation());
    }
    parserWrapper.nextToken();
    String delimiter = parserWrapper.getText();
    //extension
    parserWrapper.nextToken();
    parserWrapper.verifyCurrentToken(JsonToken.FIELD_NAME);
    String currentName = parserWrapper.getCurrentName();

    if (!PROPERTY_EXTENSION.equals(currentName)) {
        throw new JsonParseException(
                "Invalid field. Expected <" + PROPERTY_EXTENSION + "> but was <" + currentName + ">",
                parserWrapper.getCurrentLocation());
    }
    parserWrapper.nextToken();
    String extension = parserWrapper.getText();
    //Finally closing element
    parserWrapper.nextToken(JsonToken.END_OBJECT);
    //Constructing the deserialized object
    return new Extension(delimiter, extension);
}