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:com.entertailion.android.shapeways.MainActivity.java

private void getMaterials() {
    Log.d(LOG_TAG, "getMaterials");
    try {/* w w w .  ja v  a2s.  co m*/
        HttpResponse httpResponse = ((ShapewaysApplication) getApplicationContext()).getShapewaysClient()
                .getResponse(ShapewaysClient.API_URL_BASE + ShapewaysClient.MATERIALS_PATH);
        String response = EntityUtils.toString(httpResponse.getEntity());
        Log.i(LOG_TAG, "response=" + response);

        // http://wiki.fasterxml.com/JacksonInFiveMinutes
        ObjectMapper mapper = new ObjectMapper();
        Map<String, Object> map = mapper.readValue(response, Map.class);
        Log.i(LOG_TAG, "map=" + map);

        // The response does not use array[] notation for the list of
        // materials.
        // So, have to manually parse the JSON to get the list data.
        MappingJsonFactory f = new MappingJsonFactory();
        JsonParser jp = f.createJsonParser(response);
        Materials materials = new Materials();
        materials.setStatusCode(httpResponse.getStatusLine().getStatusCode());
        jp.nextToken(); // will return JsonToken.START_OBJECT (verify?)
        while (jp.nextToken() != JsonToken.END_OBJECT) {
            String fieldname = jp.getCurrentName();
            Log.d(LOG_TAG, "fieldname=" + fieldname);
            jp.nextToken(); // move to value
            if ("materials".equals(fieldname)) { // contains an object
                // Material material = jp.readValueAs(Material.class);
                boolean end = false;
                do {
                    Material material = new Material();
                    while (jp.nextToken() != JsonToken.END_OBJECT) {
                        String namefield = jp.getCurrentName();
                        Log.d(LOG_TAG, "namefield=" + namefield);
                        jp.nextToken(); // move to value
                        if ("materialId".equals(namefield)) {
                            material.setMaterialId(Integer.parseInt(jp.getText()));
                        } else if ("title".equals(namefield)) {
                            material.setTitle(jp.getText());
                        } else if ("supportsColorFiles".equals(namefield)) {
                            material.setSupportsColorFiles(Integer.parseInt(jp.getText()));
                        } else if ("printerId".equals(namefield)) {
                            material.setPrinterId(jp.getText());
                        } else if ("swatch".equals(namefield)) {
                            material.setSwatch(jp.getText());
                        } else {
                            Log.w(LOG_TAG, "Unrecognized material field: " + namefield);
                        }
                    }
                    materials.getMaterials().add(material);
                    JsonToken token = jp.nextToken();
                    Log.d(LOG_TAG, "token=" + token);
                    if (token == JsonToken.FIELD_NAME) {
                        try {
                            Integer.parseInt(jp.getCurrentName());
                            jp.nextToken();
                        } catch (Exception ex) {
                            end = true;
                        }
                    } else if (token == JsonToken.END_OBJECT) {
                        end = true;
                    }
                } while (!end);

            } else if ("result".equals(fieldname)) {
                if (jp.getText().equals(Result.success.name())) {
                    materials.setResult(Result.success);
                } else if (jp.getText().equals(Result.failure.name())) {
                    materials.setResult(Result.failure);
                }
            } else {
                Log.w(LOG_TAG, "Unrecognized materials field: " + fieldname);
            }
        }
        jp.close(); // ensure resources get cleaned up timely and properly

        Log.i(LOG_TAG, "materials=" + materials.getMaterials().size());
        Log.i(LOG_TAG, "material: id=" + materials.getMaterials().get(0).getMaterialId());
        Log.i(LOG_TAG, "material: title=" + materials.getMaterials().get(0).getTitle());
        Log.i(LOG_TAG, "material: swatch=" + materials.getMaterials().get(0).getSwatch());
    } catch (Exception e) {
        Log.e(LOG_TAG, "getMaterials", e);
    }
}

From source file:com.netflix.hollow.jsonadapter.HollowJsonAdapter.java

private void skipSubArray(JsonParser parser) throws IOException {
    JsonToken token = parser.nextToken();

    while (token != JsonToken.END_ARRAY) {

        if (token == JsonToken.START_OBJECT) {
            skipObject(parser);//  w w  w  .  j a v a2  s.c om
        } else {
            skipObjectField(parser, token);
        }

        token = parser.nextToken();
    }
}

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

protected void doPut(final SlingHttpServletRequest request, final SlingHttpServletResponse response)
        throws ServletException, IOException {

    final String path = request.getRequestParameter("path").getString();
    final ResourceResolver resolver = request.getResourceResolver();
    UGCImportHelper.checkUserPrivileges(resolver, rrf);

    final Resource resource = resolver.getResource(path);
    if (resource == null) {
        throw new ServletException("Could not find a valid resource for import");
    }/*  ww w  . j a v  a2s. co m*/
    final String filePath = request.getRequestParameter("filePath").getString();
    if (!filePath.startsWith(ImportFileUploadServlet.UPLOAD_DIR)) {
        throw new ServletException("Path to file resource lies outside migration import path");
    }
    final Resource fileResource = resolver.getResource(filePath);
    if (fileResource == null) {
        throw new ServletException("Could not find a valid file resource to read");
    }
    // get the input stream from the file resource
    Resource file = fileResource.getChild("file");
    if (null != file && !(file instanceof NonExistingResource)) {
        file = file.getChild(JcrConstants.JCR_CONTENT);
        if (null != file && !(file instanceof NonExistingResource)) {
            final ValueMap contentVM = file.getValueMap();
            InputStream inputStream = (InputStream) contentVM.get(JcrConstants.JCR_DATA);
            if (inputStream != null) {
                final JsonParser jsonParser = new JsonFactory().createParser(inputStream);
                jsonParser.nextToken(); // get the first token

                importFile(jsonParser, resource, resolver);
                deleteResource(fileResource);
                return;
            }
        }
    }
    throw new ServletException("Unable to read file in provided file resource path");
}

From source file:io.pdef.json.JsonJacksonFormat.java

private List<?> readArray(final JsonParser parser) throws IOException {
    JsonToken current = parser.getCurrentToken();
    if (current != JsonToken.START_ARRAY) {
        throw new JsonFormatException("Bad JSON string, failed to read an array");
    }//from  ww w  .j a  va  2  s  .  c o m

    List<Object> list = new ArrayList<Object>();
    while (true) {
        JsonToken next = parser.nextToken();
        if (next == null) {
            throw new JsonFormatException("End of file");
        } else if (next == JsonToken.END_ARRAY) {
            break;
        }

        Object element = read(parser);
        list.add(element);
    }

    return list;
}

From source file:org.helm.notation2.wsadapter.MonomerWSLoader.java

/**
 * Private routine to deserialize a JSON containing attachment data. This is
 * done manually to give more freedom regarding data returned by the
 * webservice./*  w w w  . ja v  a2s . c  o  m*/
 *
 * @param parser the JSONParser containing JSONData.
 * @param attachmentDB the attachments stored in the Toolkit
 * @return List containing attachments
 *
 * @throws JsonParseException
 * @throws IOException
 */
private List<Attachment> deserializeAttachmentList(JsonParser parser, Map<String, Attachment> attachmentDB)
        throws JsonParseException, IOException {
    List<Attachment> attachments = new ArrayList<Attachment>();
    Attachment currentAttachment = null;

    while (!JsonToken.END_ARRAY.equals(parser.nextToken())) {

        String fieldName = parser.getCurrentName();
        JsonToken token = parser.getCurrentToken();

        if (JsonToken.START_OBJECT.equals(token)) {
            currentAttachment = new Attachment();
        } else if (JsonToken.END_OBJECT.equals(token)) {
            currentAttachment.setCapGroupSMILES(
                    attachmentDB.get(currentAttachment.getAlternateId()).getCapGroupSMILES());
            attachments.add(currentAttachment);
        }

        if (fieldName != null) {
            switch (fieldName) {
            case "id":
                parser.nextToken();
                currentAttachment.setId(Integer.parseInt(parser.getText()));
                break;
            case "alternateId":
                parser.nextToken();
                currentAttachment.setAlternateId(parser.getText());
                break;
            case "label":
                parser.nextToken();
                currentAttachment.setLabel(parser.getText());
                break;
            case "capGroupName":
                parser.nextToken();
                currentAttachment.setCapGroupName(parser.getText());
                break;
            case "capGroupSMILES":
                parser.nextToken();
                currentAttachment.setCapGroupSMILES(parser.getText());
                break;
            default:
                break;
            }
        }

    }

    return attachments;
}

From source file:org.helm.notation2.wsadapter.MonomerWSLoader.java

/**
 * Private routine to deserialize monomer Store JSON. This is done manually to
 * give more freedom regarding data returned by the webservice.
 *
 * @param parser the JSONParser containing JSONData.
 * @param attachmentDB the attachments stored in the Toolkit
 * @return Map containing monomers/*  w  w  w. java  2  s.c o  m*/
 *
 * @throws JsonParseException
 * @throws IOException
 * @throws EncoderException
 */
private Map<String, Monomer> deserializeMonomerStore(JsonParser parser, Map<String, Attachment> attachmentDB)
        throws JsonParseException, IOException, EncoderException {
    Map<String, Monomer> monomers = new HashMap<String, Monomer>();
    Monomer currentMonomer = null;

    parser.nextToken();
    while (parser.hasCurrentToken()) {
        String fieldName = parser.getCurrentName();
        JsonToken token = parser.getCurrentToken();

        if (JsonToken.START_OBJECT.equals(token)) {
            currentMonomer = new Monomer();
        } else if (JsonToken.END_OBJECT.equals(token)) {
            monomers.put(currentMonomer.getAlternateId(), currentMonomer);
        }

        if (fieldName != null) {
            switch (fieldName) {
            // id is first field
            case "id":
                parser.nextToken();
                currentMonomer.setId(Integer.parseInt(parser.getText()));
                break;
            case "alternateId":
                parser.nextToken();
                currentMonomer.setAlternateId(parser.getText());
                break;
            case "naturalAnalog":
                parser.nextToken();
                currentMonomer.setNaturalAnalog(parser.getText());
                break;
            case "name":
                parser.nextToken();
                currentMonomer.setName(parser.getText());
                break;
            case "canSMILES":
                parser.nextToken();
                currentMonomer.setCanSMILES(parser.getText());
                break;
            case "molfile":
                parser.nextToken();
                currentMonomer.setMolfile(MolfileEncoder.decode(parser.getText()));
                break;
            case "monomerType":
                parser.nextToken();
                currentMonomer.setMonomerType(parser.getText());
                break;
            case "polymerType":
                parser.nextToken();
                currentMonomer.setPolymerType(parser.getText());
                break;
            case "attachmentList":
                currentMonomer.setAttachmentList(deserializeAttachmentList(parser, attachmentDB));
                break;
            case "newMonomer":
                parser.nextToken();
                currentMonomer.setNewMonomer(Boolean.parseBoolean(parser.getText()));
                break;
            case "adHocMonomer":
                parser.nextToken();
                currentMonomer.setAdHocMonomer(Boolean.parseBoolean(parser.getText()));
                break;
            default:
                break;
            }
        }
        parser.nextToken();
    }

    return monomers;
}

From source file:bamboo.trove.full.FullReindexWarcManager.java

private LinkedList<ToIndex> getNextBatch() throws IOException {
    long startOfNextBatch = endOfBatchId + 1;
    URL url = new URL(bambooCollectionsUrl + "?start=" + startOfNextBatch + "&rows=" + bambooBatchSize);
    log.info("Contacting Bamboo for more IDs. start={}, rows={}", startOfNextBatch, bambooBatchSize);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    InputStream in = new BufferedInputStream(connection.getInputStream());

    ObjectMapper om = getObjectMapper();
    JsonParser json = createParser(in);
    JsonToken token = json.nextToken();

    if (token == null) {
        throw new IllegalArgumentException("No JSON data found in response");
    }// w  w w .  j  av a2  s  . c o  m
    if (!JsonToken.START_ARRAY.equals(token)) {
        throw new IllegalArgumentException("JSON response is not an array");
    }

    LinkedList<ToIndex> result = new LinkedList<>();
    while (json.nextToken() == JsonToken.START_OBJECT) {
        result.add(new ToIndex(om.readValue(json, WarcToIndex.class)));
    }
    return result;
}

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

private void parseField(List<String> fieldNames, List<Primitive> fieldTypes, Row.RowBuilder rowBuilder,
        JsonParser parser) throws IOException {
    final String fieldName = parser.getCurrentName();

    // Move to next token, which is name's value
    JsonToken token = parser.nextToken();
    int i = fieldNames.indexOf(fieldName);
    if (i < 0) {
        return;/*w  ww. ja v  a2 s .c o  m*/
    }
    switch (token) {
    case VALUE_NUMBER_INT:
    case VALUE_NUMBER_FLOAT:
        Primitive type = fieldTypes.get(i);
        if (type == null) {
            if (token == JsonToken.VALUE_NUMBER_INT) {
                type = Primitive.INT;
            } else {
                type = Primitive.FLOAT;
            }
        }
        switch (type) {
        case BYTE:
            rowBuilder.set(i, parser.getIntValue());
            break;
        case SHORT:
            rowBuilder.set(i, parser.getShortValue());
            break;
        case INT:
            rowBuilder.set(i, parser.getIntValue());
            break;
        case LONG:
            rowBuilder.set(i, parser.getLongValue());
            break;
        case FLOAT:
            rowBuilder.set(i, parser.getFloatValue());
            break;
        case DOUBLE:
            rowBuilder.set(i, parser.getDoubleValue());
            break;
        }
        break;
    case VALUE_TRUE:
        rowBuilder.set(i, true);
        break;
    case VALUE_FALSE:
        rowBuilder.set(i, false);
        break;
    case VALUE_NULL:
        break;
    default:
        rowBuilder.set(i, parser.getText());
    }
}

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

public final NativeResponse.Link.Builder readRespLink(JsonParser par) throws IOException {
    NativeResponse.Link.Builder link = NativeResponse.Link.newBuilder();
    for (startObject(par); endObject(par); par.nextToken()) {
        String fieldName = getCurrentName(par);
        if (par.nextToken() != JsonToken.VALUE_NULL) {
            readRespLinkField(par, link, fieldName);
        }/*w w w.j a va  2s.  c  o  m*/
    }
    return link;
}

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

public final NativeRequest.Asset.Builder readReqAsset(JsonParser par) throws IOException {
    NativeRequest.Asset.Builder asset = NativeRequest.Asset.newBuilder();
    for (startObject(par); endObject(par); par.nextToken()) {
        String fieldName = getCurrentName(par);
        if (par.nextToken() != JsonToken.VALUE_NULL) {
            readReqAssetField(par, asset, fieldName);
        }// w w  w . ja  v a  2  s. c  o m
    }
    return asset;
}