Android Open Source - JsonPullParser Jpp Parser






From Project

Back to project page JsonPullParser.

License

The source code is released under:

Apache License

If you think the Android project JsonPullParser listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package net.vvakame.util.jsonpullparser.googleapiclient;
//from  ww w . j  a v  a 2 s  .  com
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayDeque;
import java.util.Deque;

import net.vvakame.util.jsonpullparser.JsonFormatException;
import net.vvakame.util.jsonpullparser.JsonPullParser;
import net.vvakame.util.jsonpullparser.JsonPullParser.State;

import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.JsonParser;
import com.google.api.client.json.JsonToken;

/**
 * Implementation for {@link JsonParser} by JsonPullParser.
 * @author vvakame
 */
public class JppParser extends JsonParser {

  final JppFactory factory;

  final JsonPullParser parser;

  JsonToken current;

  JsonFormatException ex;

  Deque<State> stateStack = new ArrayDeque<State>();

  boolean readLast = false;

  boolean finished = false;


  /**
   * the constructor.
   * @param factory
   * @param parser
   * @category constructor
   */
  public JppParser(JppFactory factory, JsonPullParser parser) {
    this.factory = factory;
    this.parser = parser;
  }

  @Override
  public JsonFactory getFactory() {
    return factory;
  }

  @Override
  public JsonToken nextToken() throws IOException {
    try {
      if (readLast) {
        finished = true;
        return null;
      }
      State state = parser.getEventType();
      if (state == State.START_ARRAY || state == State.START_HASH) {
        stateStack.push(state);
      } else if (state == State.END_ARRAY || state == State.END_HASH) {
        stateStack.pop();
        if (stateStack.isEmpty()) {
          readLast = true;
        }
      }
      current = JppFactory.convert(state, parser);
      return current;
    } catch (JsonFormatException e) {
      ex = e;
    }
    return null;
  }

  @Override
  public JsonToken getCurrentToken() {
    if (ex != null) {
      throw new IllegalArgumentException(ex);
    }
    if (finished) {
      return null;
    } else {
      return current;
    }
  }

  @Override
  public String getCurrentName() {
    switch (current) {
      case START_ARRAY:
      case END_ARRAY:
      case START_OBJECT:
      case END_OBJECT:
      case VALUE_NUMBER_FLOAT:
      case VALUE_NUMBER_INT:
      case VALUE_FALSE:
      case VALUE_TRUE:
        return null;
      default:
        return parser.getValueString();
    }
  }

  @Override
  public JsonParser skipChildren() throws IOException {
    try {
      JsonToken current = getCurrentToken();
      if (current != JsonToken.START_OBJECT && current != JsonToken.START_ARRAY) {
        return this;
      }
      JsonToken next;
      do {
        next = nextToken();
        if (current == JsonToken.START_OBJECT || current == JsonToken.START_ARRAY) {
          skipChildren();
        }
      } while (next != JsonToken.END_OBJECT && next != JsonToken.END_ARRAY);
    } catch (IllegalStateException e) {
      throw new IOException(e);
    }
    return this;
  }

  @Override
  public String getText() {
    return parser.getValueString();
  }

  @Override
  public byte getByteValue() {
    return (byte) parser.getValueLong();
  }

  @Override
  public short getShortValue() {
    return (short) parser.getValueLong();
  }

  @Override
  public int getIntValue() {
    return (int) parser.getValueLong();
  }

  @Override
  public long getLongValue() {
    return parser.getValueLong();
  }

  @Override
  public float getFloatValue() {
    return (float) parser.getValueDouble();
  }

  @Override
  public double getDoubleValue() {
    return parser.getValueDouble();
  }

  // TODO support BigInteger and BigDecimal

  @Override
  public BigInteger getBigIntegerValue() {
    return BigInteger.valueOf(parser.getValueLong());
  }

  @Override
  public BigDecimal getDecimalValue() {
    if (current == JsonToken.VALUE_NUMBER_INT) {
      return BigDecimal.valueOf(parser.getValueLong());
    } else {
      return BigDecimal.valueOf(parser.getValueDouble());
    }
  }

  @Override
  public void close() {
  }
}




Java Source Code List

net.vvakame.apt.AptUtil.java
net.vvakame.jsonpullparser.android.sample.MainActivity.java
net.vvakame.sample.BaseData.java
net.vvakame.sample.BuilderData.java
net.vvakame.sample.ComplexData2.java
net.vvakame.sample.ComplexData.java
net.vvakame.sample.ContainsAnotherPackageObjectData.java
net.vvakame.sample.ConverterData.java
net.vvakame.sample.ExtendsData1.java
net.vvakame.sample.ExtendsData2.java
net.vvakame.sample.ForInnerClassData.java
net.vvakame.sample.GenToPackagePrivateData.java
net.vvakame.sample.JsonMetaToPackagePrivateValidData.java
net.vvakame.sample.MiniData.java
net.vvakame.sample.NestDepth1Data.java
net.vvakame.sample.NestDepth2Data.java
net.vvakame.sample.NestParentData.java
net.vvakame.sample.PrimitiveTypeData.java
net.vvakame.sample.PrimitiveWrapperData.java
net.vvakame.sample.PrimitiveWrapperListData.java
net.vvakame.sample.SampleEnum.java
net.vvakame.sample.SortOrderData1.java
net.vvakame.sample.SortOrderData2.java
net.vvakame.sample.StoreJsonData1.java
net.vvakame.sample.StoreJsonData2.java
net.vvakame.sample.TestData.java
net.vvakame.sample.anotherpackage.AnotherPackageClass.java
net.vvakame.sample.converter.IntFlattenConverter.java
net.vvakame.sample.converter.StringDiscardConverter.java
net.vvakame.sample.duma.ItemMapConverter.java
net.vvakame.sample.duma.Item.java
net.vvakame.sample.duma.ReadItLater.java
net.vvakame.sample.issue25.Issue25.java
net.vvakame.sample.issue28.Issue28.java
net.vvakame.sample.issue2.Child0ValueP0.java
net.vvakame.sample.issue2.Child0ValueP1.java
net.vvakame.sample.issue2.Child1ValueP0.java
net.vvakame.sample.issue2.Child1ValueP1.java
net.vvakame.sample.issue2.Grandchild0ValueC0P0.java
net.vvakame.sample.issue2.Grandchild0ValueC0P1.java
net.vvakame.sample.issue2.Grandchild0ValueC1P0.java
net.vvakame.sample.issue2.Grandchild0ValueC1P1.java
net.vvakame.sample.issue2.Grandchild1ValueC0P0.java
net.vvakame.sample.issue2.Grandchild1ValueC0P1.java
net.vvakame.sample.issue2.Grandchild1ValueC1P0.java
net.vvakame.sample.issue2.Grandchild1ValueC1P1.java
net.vvakame.sample.issue2.Parent0Value.java
net.vvakame.sample.issue2.Parent1Value.java
net.vvakame.sample.issue30.PrimitiveList.java
net.vvakame.sample.issue30.RecursiveStructure.java
net.vvakame.sample.issue31.BaseData.java
net.vvakame.sample.issue31.ExtendData.java
net.vvakame.sample.twitter.Place.java
net.vvakame.sample.twitter.Place.java
net.vvakame.sample.twitter.Tweet.java
net.vvakame.sample.twitter.Tweet.java
net.vvakame.sample.twitter.User.java
net.vvakame.sample.twitter.User.java
net.vvakame.twitter.ResultTweet.java
net.vvakame.twitter.SearchResult.java
net.vvakame.util.jsonpullparser.JsonFormatException.java
net.vvakame.util.jsonpullparser.JsonPullParser.java
net.vvakame.util.jsonpullparser.JsonSlice.java
net.vvakame.util.jsonpullparser.Stack.java
net.vvakame.util.jsonpullparser.annotation.JsonKey.java
net.vvakame.util.jsonpullparser.annotation.JsonModel.java
net.vvakame.util.jsonpullparser.annotation.StoreJson.java
net.vvakame.util.jsonpullparser.builder.JsonCoderRouter.java
net.vvakame.util.jsonpullparser.builder.JsonModelBuilder.java
net.vvakame.util.jsonpullparser.builder.JsonModelCoder.java
net.vvakame.util.jsonpullparser.builder.JsonPropertyBuilderCreator.java
net.vvakame.util.jsonpullparser.builder.JsonPropertyBuilder.java
net.vvakame.util.jsonpullparser.builder.JsonPropertyCoder.java
net.vvakame.util.jsonpullparser.builder.JsonPropertyMeta.java
net.vvakame.util.jsonpullparser.factory.JsonAnnotationProcessor.java
net.vvakame.util.jsonpullparser.factory.JsonKeyModel.java
net.vvakame.util.jsonpullparser.factory.JsonModelGenerator.java
net.vvakame.util.jsonpullparser.factory.JsonModelModel.java
net.vvakame.util.jsonpullparser.factory.Log.java
net.vvakame.util.jsonpullparser.factory.StandardTypeKindVisitor.java
net.vvakame.util.jsonpullparser.factory.StoreJsonModel.java
net.vvakame.util.jsonpullparser.factory.template.MvelTemplate.java
net.vvakame.util.jsonpullparser.factory.template.Template.java
net.vvakame.util.jsonpullparser.googleapiclient.JppFactory.java
net.vvakame.util.jsonpullparser.googleapiclient.JppGenerator.java
net.vvakame.util.jsonpullparser.googleapiclient.JppParser.java
net.vvakame.util.jsonpullparser.util.JsonArray.java
net.vvakame.util.jsonpullparser.util.JsonHash.java
net.vvakame.util.jsonpullparser.util.JsonParseUtil.java
net.vvakame.util.jsonpullparser.util.JsonSliceUtil.java
net.vvakame.util.jsonpullparser.util.JsonUtil.java
net.vvakame.util.jsonpullparser.util.OnJsonObjectAddListener.java
net.vvakame.util.jsonpullparser.util.TokenConverter.java
net.vvakame.util.jsonpullparser.util.Type.java