Example usage for com.google.gson.stream JsonReader nextNull

List of usage examples for com.google.gson.stream JsonReader nextNull

Introduction

In this page you can find the example usage for com.google.gson.stream JsonReader nextNull.

Prototype

public void nextNull() throws IOException 

Source Link

Document

Consumes the next token from the JSON stream and asserts that it is a literal null.

Usage

From source file:com.flipkart.batching.gson.adapters.data.TagTypeAdapter.java

License:Open Source License

@Override
public Tag read(JsonReader reader) throws IOException {
    if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
        reader.nextNull();
        return null;
    }// w w w.  j  av a  2 s.  c om
    if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
        reader.skipValue();
        return null;
    }
    reader.beginObject();

    String id = null;
    while (reader.hasNext()) {
        String name = reader.nextName();
        com.google.gson.stream.JsonToken jsonToken = reader.peek();
        if (jsonToken == com.google.gson.stream.JsonToken.NULL) {
            reader.skipValue();
            continue;
        }
        switch (name) {
        case "id":
            id = com.google.gson.internal.bind.TypeAdapters.STRING.read(reader);
            break;
        default:
            reader.skipValue();
            break;
        }
    }

    reader.endObject();
    return id == null ? null : new Tag(id);
}

From source file:com.flipkart.batching.gson.adapters.DataCollectionTypeAdapter.java

License:Open Source License

@Override
public DataCollection<T> read(JsonReader reader) throws IOException {
    if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
        reader.nextNull();
        return null;
    }/*  w  w w.  j a  va 2 s.  c  o m*/
    if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
        reader.skipValue();
        return null;
    }
    reader.beginObject();

    Collection<T> collection = null;
    while (reader.hasNext()) {
        String name = reader.nextName();
        com.google.gson.stream.JsonToken jsonToken = reader.peek();
        if (jsonToken == com.google.gson.stream.JsonToken.NULL) {
            reader.skipValue();
            continue;
        }
        switch (name) {
        case "dataCollection":
            collection = collectionTypeAdapter.read(reader);
            break;
        default:
            reader.skipValue();
            break;
        }
    }

    reader.endObject();
    return null != collection ? new DataCollection<>(collection) : null;
}

From source file:com.flipkart.batching.gson.RuntimeTypeAdapterFactory.java

License:Open Source License

public <R> TypeAdapter<R> create(Gson gson, TypeToken<R> type) {
    if (type.getRawType() != baseType) {
        return null;
    }/*from   w w  w  .j av a 2 s. co  m*/

    final Map<String, TypeAdapter<?>> labelToDelegate = new LinkedHashMap<>();
    final Map<Class<?>, TypeAdapter<?>> subtypeToDelegate = new LinkedHashMap<>();

    for (Map.Entry<String, Class<?>> entry : labelToSubtype.entrySet()) {
        TypeAdapter<?> delegate = labelToTypeAdapter.get(entry.getKey());
        if (delegate == null) {
            delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue()));
        }
        labelToDelegate.put(entry.getKey(), delegate);
        subtypeToDelegate.put(entry.getValue(), delegate);
    }

    return new TypeAdapter<R>() {
        @Override
        public R read(JsonReader reader) throws IOException {

            if (reader.peek() == com.google.gson.stream.JsonToken.NULL) {
                reader.nextNull();
                return null;
            }
            if (reader.peek() != com.google.gson.stream.JsonToken.BEGIN_OBJECT) {
                reader.skipValue();
                return null;
            }
            reader.beginObject();

            String label = null;
            R result = null;
            while (reader.hasNext()) {
                String name = reader.nextName();
                com.google.gson.stream.JsonToken jsonToken = reader.peek();
                if (jsonToken == com.google.gson.stream.JsonToken.NULL) {
                    reader.skipValue();
                    continue;
                }
                switch (name) {
                case "type":
                    label = TypeAdapters.STRING.read(reader);
                    break;
                case "value":
                    @SuppressWarnings("unchecked") // registration requires that subtype extends T
                    TypeAdapter<R> delegate = label == null ? null
                            : (TypeAdapter<R>) labelToDelegate.get(label);
                    if (delegate == null) {
                        throw new JsonParseException("cannot deserialize " + baseType + " subtype named "
                                + label + "; did you forget to register a subtype?");
                    }
                    result = delegate.read(reader);
                    break;
                default:
                    reader.skipValue();
                    break;
                }
            }

            reader.endObject();
            return result;
        }

        @Override
        public void write(JsonWriter out, R value) throws IOException {
            Class<?> srcType = value.getClass();
            @SuppressWarnings("unchecked") // registration requires that subtype extends T
            TypeAdapter<R> delegate = (TypeAdapter<R>) subtypeToDelegate.get(srcType);
            if (delegate == null) {
                throw new JsonParseException(
                        "cannot serialize " + srcType.getName() + "; did you forget to register a subtype?");
            }
            String label = subtypeToLabel.get(srcType);
            out.beginObject();

            out.name("type");
            out.value(label);

            out.name("value");
            delegate.write(out, value);

            out.endObject();
        }
    }.nullSafe();
}

From source file:com.gilecode.yagson.adapters.TypeAdvisableComplexTypeAdapter.java

License:Apache License

public T read(JsonReader in, ReadContext ctx) throws IOException {
    JsonToken nextToken = in.peek();/*from  ww w. j  av a  2 s .c o  m*/

    if (nextToken == JsonToken.NULL) {
        in.nextNull();
        return null;
    } else if (nextToken == JsonToken.STRING) {
        // for complex type adapters, each string is a reference, no isReferenceString() match required
        String reference = in.nextString();
        T referenced = ctx.refsContext().getReferencedObject(reference);
        return referenced;
    }

    return readOptionallyAdvisedInstance(in, ctx);
}

From source file:com.github.filosganga.geogson.gson.PositionsAdapter.java

License:Apache License

@Override
public Positions read(JsonReader in) throws IOException {

    Positions parsed;//from   w w w .jav a  2s. c om

    JsonToken peek = in.peek();
    if (peek == JsonToken.NULL) {
        in.nextNull();
        parsed = null;
    } else if (peek == JsonToken.BEGIN_ARRAY) {
        parsed = parsePositions(in);
    } else {
        throw new IllegalArgumentException("The json must be an array or null: " + in.peek());
    }

    return parsed;
}

From source file:com.github.gv2011.jsong.JsongAdapter.java

License:Open Source License

private JsonNode deserialize(final JsonFactoryImp jf, final JsonReader in) {
    return call(() -> {
        switch (in.peek()) {
        case STRING:
            return jf.primitive(in.nextString());
        case NUMBER:
            return jf.primitive(new BigDecimal(in.nextString()));
        case BOOLEAN:
            return jf.primitive(in.nextBoolean());
        case NULL:
            in.nextNull();
            return jf.jsonNull();
        case BEGIN_ARRAY:
            in.beginArray();//from w  ww . j  ava2 s  .c o  m
            final JsonList list = XStream.fromIterator(new It(jf, in)).collect(jf.toJsonList());
            in.endArray();
            return list;
        case BEGIN_OBJECT:
            in.beginObject();
            final JsonObject obj = XStream.fromIterator(new Itm(jf, in)).collect(jf.toJsonObject());
            in.endObject();
            return obj;
        case NAME:
        case END_DOCUMENT:
        case END_OBJECT:
        case END_ARRAY:
        default:
            throw new IllegalArgumentException();
        }
    });
}

From source file:com.github.kevinsawicki.halligan.Resource.java

License:Open Source License

/**
 * Parse resource property//  w w w .  j a v  a 2  s  .c  om
 *
 * @param reader
 * @param name
 * @throws IOException
 */
protected void parseProperty(final JsonReader reader, final String name) throws IOException {
    JsonToken next = reader.peek();
    switch (next) {
    case BEGIN_OBJECT:
        properties.put(name, gson.getGson().fromJson(reader, Map.class));
        break;
    case STRING:
        properties.put(name, reader.nextString());
        break;
    case NUMBER:
        properties.put(name, reader.nextDouble());
        break;
    case NULL:
        properties.put(name, null);
        reader.nextNull();
        break;
    case BOOLEAN:
        properties.put(name, reader.nextBoolean());
        break;
    default:
        throw new IOException("Unrecognized property value token: " + next);
    }
}

From source file:com.github.lindenb.gatkui.Json2Xml.java

License:Open Source License

private void parse(String label, JsonReader r) throws Exception {
    if (!r.hasNext())
        return;//from  ww w  .j  a  va2 s .c o m
    JsonToken token = r.peek();
    switch (token) {
    case NAME:
        break;
    case BEGIN_OBJECT: {
        r.beginObject();
        parseObject(label, r);
        break;
    }
    case END_OBJECT: {
        break;
    }
    case BEGIN_ARRAY: {
        r.beginArray();
        parseArray(label, r);
        break;
    }
    case END_ARRAY: {
        break;
    }
    case NULL: {
        r.nextNull();
        w.writeEmptyElement(NS, "null");
        if (label != null)
            w.writeAttribute("name", label);
        break;
    }
    case STRING: {
        w.writeStartElement(NS, "string");
        if (label != null)
            w.writeAttribute("name", label);
        w.writeCharacters(r.nextString());
        w.writeEndElement();
        break;
    }
    case NUMBER: {
        w.writeStartElement(NS, "number");
        if (label != null)
            w.writeAttribute("name", label);
        String s;
        try {
            s = String.valueOf(r.nextLong());
        } catch (Exception err) {
            s = String.valueOf(r.nextDouble());
        }

        w.writeCharacters(s);
        w.writeEndElement();
        break;
    }
    case BOOLEAN: {
        w.writeStartElement(NS, "boolean");
        if (label != null)
            w.writeAttribute("name", label);
        w.writeCharacters(String.valueOf(r.nextBoolean()));
        w.writeEndElement();
        break;
    }
    case END_DOCUMENT: {
        break;
    }
    default:
        throw new IllegalStateException(token.name());
    }

}

From source file:com.github.riotopsys.malforandroid2.util.AnimeWatchedStatusTypeAdapter.java

License:Apache License

@Override
public AnimeWatchedStatus read(JsonReader in) throws IOException {
    if (in.peek() != JsonToken.NULL) {
        return AnimeWatchedStatus.getByServerKey(in.nextString());
    }//from w  ww .j  a  v  a2s .  c om
    in.nextNull();
    return null;
}

From source file:com.github.riotopsys.malforandroid2.util.MangaReadStatusTypeAdapter.java

License:Apache License

@Override
public MangaReadStatus read(JsonReader in) throws IOException {
    if (in.peek() != JsonToken.NULL) {
        return MangaReadStatus.getByServerKey(in.nextString());
    }//w  ww . j  av a2 s. c  o  m
    in.nextNull();
    return null;
}