Java 类android.util.JsonReader 实例源码

项目:GitHub    文件:Realm.java   
/**
 * Creates a Realm object for each object in a JSON array. This must be done within a transaction.
 * JSON properties with unknown properties will be ignored. If a {@link RealmObject} field is not present in the
 * JSON object the {@link RealmObject} field will be set to the default value for that type.
 * <p>
 * This API is only available in API level 11 or later.
 *
 * <p>
 * This method currently does not support value list field.
 *
 * @param clazz type of Realm objects created.
 * @param inputStream the JSON array as a InputStream. All objects in the array must be of the specified class.
 * @throws RealmException if mapping from JSON fails.
 * @throws IllegalArgumentException if the JSON object doesn't have a primary key property but the corresponding
 * {@link RealmObjectSchema} has a {@link io.realm.annotations.PrimaryKey} defined.
 * @throws IOException if something was wrong with the input stream.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public <E extends RealmModel> void createAllFromJson(Class<E> clazz, InputStream inputStream) throws IOException {
    //noinspection ConstantConditions
    if (clazz == null || inputStream == null) {
        return;
    }
    checkIfValid();

    JsonReader reader = new JsonReader(new InputStreamReader(inputStream, "UTF-8"));
    try {
        reader.beginArray();
        while (reader.hasNext()) {
            configuration.getSchemaMediator().createUsingJsonStream(clazz, this, reader);
        }
        reader.endArray();
    } finally {
        reader.close();
    }
}
项目:ExoPlayer-Offline    文件:SampleChooserActivity.java   
@Override
protected List<SampleGroup> doInBackground(String... uris) {
  List<SampleGroup> result = new ArrayList<>();
  Context context = getApplicationContext();
  String userAgent = Util.getUserAgent(context, "ExoPlayerDemo");
  DataSource dataSource = new DefaultDataSource(context, null, userAgent, false);
  for (String uri : uris) {
    DataSpec dataSpec = new DataSpec(Uri.parse(uri));
    InputStream inputStream = new DataSourceInputStream(dataSource, dataSpec);
    try {
      readSampleGroups(new JsonReader(new InputStreamReader(inputStream, "UTF-8")), result);
    } catch (Exception e) {
      Log.e(TAG, "Error loading sample list: " + uri, e);
      sawError = true;
    } finally {
      Util.closeQuietly(dataSource);
    }
  }
  return result;
}
项目:nifi-android-s2s    文件:PeerListParser.java   
public static List<Peer> parsePeers(InputStream inputStream) throws IOException {
    List<Peer> result = null;
    JsonReader jsonReader = new JsonReader(new InputStreamReader(inputStream, Charsets.UTF_8));
    try {
        jsonReader.beginObject();
        try {
            while (jsonReader.hasNext()) {
                if (PEERS.equals(jsonReader.nextName())) {
                    result = parsePeersArray(jsonReader);
                } else {
                    jsonReader.skipValue();
                }
            }
        } finally {
            jsonReader.endObject();
        }
    } finally {
        jsonReader.close();
    }
    return result == null ? Collections.<Peer>emptyList() : result;
}
项目:nifi-android-s2s    文件:Port.java   
public Port(JsonReader jsonReader) throws IOException {
    jsonReader.beginObject();
    String id = null;
    String name = null;
    while (jsonReader.hasNext()) {
        String key = jsonReader.nextName();
        if (id == null && ID.equals(key)) {
            id = jsonReader.nextString();
        } else if (name == null && NAME.equals(key)) {
            name = jsonReader.nextString();
        } else {
            jsonReader.skipValue();
        }
    }
    jsonReader.endObject();
    this.id = id;
    this.name = name;
}
项目:BTNotifierAndroid    文件:IncomingMessage.java   
public IncomingMessage(String message) throws IOException {
    JsonReader reader = new JsonReader(new StringReader(message));
    reader.beginObject();
    if (reader.hasNext()) {
        String name = reader.nextName();
        if (name.equals("event")) {
            String typeString = reader.nextString();
            if (typeString.equals("action")) {
                eventType = EventType.ACTION;
            } else if (typeString.equals("dismiss")) {
                eventType = EventType.DISMISS;
            } else if (typeString.equals("blacklist")) {
                eventType = EventType.BLACKLIST;
            } else if (typeString.equals("sms")) {
                eventType = EventType.SMS;
            }
        }
    }
    jsonReader = reader;
}
项目:pivaa    文件:AboutJSONParser.java   
/**
 * Reading JSON stream from InputStream
 * @param in
 * @return
 * @throws IOException
 */
private ArrayList<AboutRecord> readJsonStream(InputStream in) {
    try {
        JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
        try {
            return readMessagesArray(reader);
        } finally {
            reader.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    ArrayList<AboutRecord> list = new ArrayList<AboutRecord>();
    return list;
}
项目:pivaa    文件:AboutJSONParser.java   
/**
 * Paring object
 * @param reader
 * @return
 * @throws IOException
 */
private AboutRecord readMessage(JsonReader reader) throws IOException {
    String name = "";
    String description = "";

    reader.beginObject();
    while (reader.hasNext()) {
        String key = reader.nextName();

        if (key.equals("name")) {
            name = reader.nextString();

        } else if (key.equals("description")) {
            description = reader.nextString();

        } else {
            reader.skipValue();
        }
    }
    reader.endObject();
    return new AboutRecord(name, description);
}
项目:firefox-tv    文件:BlocklistProcessor.java   
public static Map<String, Trie> loadCategoryMap(final JsonReader reader, final Map<String, Trie> categoryMap, final ListType listType) throws IOException {
    reader.beginObject();

    while (reader.hasNext()) {
        final String name = reader.nextName();

        if (name.equals("categories")) {
            extractCategories(reader, categoryMap, listType);
        } else {
            reader.skipValue();
        }
    }

    reader.endObject();

    return categoryMap;
}
项目:aos-MediaLib    文件:MovieIdParser.java   
private static String readName(JsonReader reader) throws IOException {
    reader.beginObject();
    String name;
    String returnValue = null;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_NAME:
                returnValue = reader.nextString();
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();
    return returnValue;
}
项目:aos-MediaLib    文件:MovieIdParser.java   
private static void readCasts(JsonReader reader, MovieTags target) throws IOException {
    reader.beginObject();
    String name;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_CAST:
                readActors(reader, target);
                break;
            case KEY_CREW:
                readDirectors(reader, target);
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();
}
项目:aos-MediaLib    文件:MovieIdParser.java   
private static String readDirector(JsonReader reader) throws IOException {
    reader.beginObject();
    String name;
    String personName = null;
    boolean isDirector = false;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_NAME:
                personName = reader.nextString();
                break;
            case KEY_JOB:
                if (DIRECTOR.equals(reader.nextString()))
                    isDirector = true;
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();
    return isDirector ? personName : null;
}
项目:aos-MediaLib    文件:MovieIdParser.java   
private static void readActor(JsonReader reader, MovieTags target) throws IOException {
    reader.beginObject();
    String name;
    String personName = null;
    String personRole = null;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_NAME:
                personName = reader.nextString();
                break;
            case KEY_CHARACTER:
                personRole = reader.nextString();
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();
    target.addActorIfAbsent(personName, personRole);
}
项目:aos-MediaLib    文件:MovieIdParser.java   
private static String readCountry(JsonReader reader) throws IOException {
    String certification = null;
    boolean isUS = false;

    reader.beginObject();
    String name;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_CERTIFICATION:
                certification = reader.nextString();
                break;
            case KEY_ISO_3166:
                if (COUNTRY_US.equals(reader.nextString()))
                    isUS = true;
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();

    return isUS ? certification : null;
}
项目:aos-MediaLib    文件:MovieIdImageParser.java   
@Override
protected MovieIdImagesResult getResult(JsonReader reader, String config) throws IOException {
    MovieIdImagesResult myResult = new MovieIdImagesResult();
    LinkedList<Image> posters = new LinkedList<Image>();
    LinkedList<Image> backdrops = new LinkedList<Image>();

    reader.beginObject();
    String name;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_POSTERS:
                readImages(reader, posters, config);
                break;
            case KEY_BACKDROPS:
                readImages(reader, backdrops, config);
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();

    myResult.posterPaths = getSortedPaths(posters);
    myResult.backdropPaths = getSortedPaths(backdrops);
    return myResult;
}
项目:aos-MediaLib    文件:MovieIdImageParser.java   
private static Image readImage(JsonReader reader, String preferredLanguage, int imageNumber) throws IOException {
    reader.beginObject();
    String filePath = null;
    String language = null;
    String name;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_FILE_PATH:
                filePath = reader.nextString();
                break;
            case KEY_ISO_639_1:
                language = reader.nextString();
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();
    return new Image(filePath, language, preferredLanguage, imageNumber);
}
项目:aos-MediaLib    文件:SearchMovieParser.java   
@Override
protected List<SearchResult> getResult(JsonReader reader, Integer config) throws IOException {
    List<SearchResult> result = new LinkedList<SearchResult>();

    reader.beginObject();
    String name;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_RESULTS:
                readResults(reader, result, config);
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();

    return result;
}
项目:aos-MediaLib    文件:SearchMovieParser.java   
public static SearchResult readResult(JsonReader reader) throws IOException {
    SearchResult item = new SearchResult();

    reader.beginObject();
    String name;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_TITLE:
                item.setTitle(reader.nextString());
                break;
            case KEY_ID:
                item.setId(reader.nextInt());
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();

    return item;
}
项目:aos-MediaLib    文件:SearchMovieTrailerParser.java   
@Override
protected List<SearchMovieTrailerResult.TrailerResult> getResult(JsonReader reader, Integer config) throws IOException {
    List<SearchMovieTrailerResult.TrailerResult> result = new LinkedList<SearchMovieTrailerResult.TrailerResult>();

    reader.beginObject();
    String name;
    while ((name = getNextNotNullName(reader)) != null) {
        switch(MATCHER.match(name)) {
            case KEY_RESULTS:
                readResults(reader, result, 40);
                break;
            default:
                reader.skipValue();
        }
    }
    reader.endObject();

    return result;
}
项目:webtrekk-android-sdk    文件:WebtrekkRecommendations.java   
private boolean processResponseMain(JsonReader reader) {
    try {
        mRequestResults = new ArrayList<>();
        reader.beginArray();
        while (reader.hasNext())
        {
            reader.beginObject();
            if (reader.nextName().equals("reco"))
            {
                processResponseRecoItem(reader, mRequestResults);
            }else
                reader.skipValue();
            reader.endObject();
        }
        reader.endArray();
    } catch (IOException e) {
        mQueryResult = QueryRecommendationResult.INCORRECT_RESPONSE;
        WebtrekkLogging.log("Incorrect response structure:"+e);
        mRequestResults = null;
        return false;
    }
    return true;
}
项目:focus-android    文件:BlocklistProcessor.java   
public static Map<String, Trie> loadCategoryMap(final JsonReader reader, final Map<String, Trie> categoryMap, final ListType listType) throws IOException {
    reader.beginObject();

    while (reader.hasNext()) {
        final String name = reader.nextName();

        if (name.equals("categories")) {
            extractCategories(reader, categoryMap, listType);
        } else {
            reader.skipValue();
        }
    }

    reader.endObject();

    return categoryMap;
}
项目:werewolves-app    文件:RoleLoader.java   
private static Role readRole(JsonReader reader) throws IOException {
    String name = null;
    String description = null;
    reader.beginObject();
    while (reader.hasNext()) {
        String property = reader.nextName();
        switch (property) {
            case NAME_PROPERTY:
                name = reader.nextString();
                break;
            case DESCRIPTION_PROPERTY:
                description = reader.nextString();
                break;
            default:
                Log.w(LOG_TAG, "Unknown property: " + property);
                break;
        }
    }
    if (name == null || description == null) {
        Log.w(LOG_TAG, "name: " + name + ", description: " + description);
        return null;
    }
    reader.endObject();
    return new Role(name, description);
}
项目:SoldierWeather    文件:Utility.java   
/**
 * 解析和处理服务器返回的数据
 * @param soldierWeatherDb
 * @param in
 * @return
 */
public static boolean handleResponse(SoldierWeatherDB soldierWeatherDb, InputStream in) {
    LogUtil.log("Utility", "handleResponse", LogUtil.DEBUG);
    soldierWeatherDB = soldierWeatherDb;
    JsonReader reader = new JsonReader(new InputStreamReader(in));
    boolean flag = false;
    try {
        reader.beginObject();
        while (reader.hasNext()) {
            String nodeName = reader.nextName();
            if (nodeName.equals("resultcode")) {
                LogUtil.log("Utility", "resultcode = " + reader.nextString(), LogUtil.NOTHING);
                flag = true;
            } else if (nodeName.equals("result") && flag) {
                saveAreaToDatabase(reader);
            } else {
                reader.skipValue();
            }
        }
        reader.endObject();
        return true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}
项目:cat-avatar-generator-app    文件:AvatarPartDb.java   
private void readParts(JsonReader reader) throws IOException {
    reader.beginArray();
    Vector<AvatarPart> parts = null;
    String currentCategory = "";
    while (reader.hasNext()) {
        reader.beginArray();
        String category = reader.nextString();
        if (!category.equals(currentCategory)) {
            parts = new Vector<>();
            mParts.put(category, parts);
            currentCategory = category;
        }
        AvatarPart part = null;
        String filename = reader.nextString();
        int x = reader.nextInt();
        int y = reader.nextInt();
        if (!TextUtils.isEmpty(filename)) {
            part = new AvatarPart(filename, x, y);
        }
        assert parts != null;
        parts.add(part);
        reader.endArray();
    }
    reader.endArray();
}
项目:memoria-politica    文件:CandidateDao.java   
private List<Politician> findCandidates(List<String> cpfList, JsonReader reader) throws IOException {
    reader.beginArray();

    List<Politician> candidates = new ArrayList<>();
    while (reader.hasNext()) {
        reader.beginObject();
        String polCpf = reader.nextName();
        int index = cpfList.indexOf(polCpf);
        if (index != -1) {
            Politician pol = new Politician(polCpf);
            readJsonObject(reader, pol);
            candidates.add(pol);
        }
        else {
            reader.skipValue();
        }
        reader.endObject();
    }

    reader.endArray();
    return candidates;
}
项目:cosi    文件:FileUtils.java   
private static JSONObject readRootObject(JsonReader reader, boolean isFolder) throws IOException, JSONException {
    reader.beginObject();
    while (reader.hasNext()) {
        String name = reader.nextName();

        if (name.equals("value")) {
            JSONObject result = FileUtils.readObject(reader, isFolder);
            reader.endObject();
            return result;
        } else {
            reader.skipValue();
        }
    }
    reader.endObject();

    return null;
}
项目:lottie-android    文件:ColorParser.java   
@Override public Integer parse(JsonReader reader, float scale) throws IOException {
  boolean isArray = reader.peek() == JsonToken.BEGIN_ARRAY;
  if (isArray) {
    reader.beginArray();
  }
  double r = reader.nextDouble();
  double g = reader.nextDouble();
  double b = reader.nextDouble();
  double a = reader.nextDouble();
  if (isArray) {
    reader.endArray();
  }

  if (r <= 1 && g <= 1 && b <= 1 && a <= 1) {
    r *= 255;
    g *= 255;
    b *= 255;
    a *= 255;
  }

  return Color.argb((int) a, (int) r, (int) g, (int) b);
}
项目:lottie-android    文件:AnimatableTextPropertiesParser.java   
public static AnimatableTextProperties parse(
    JsonReader reader, LottieComposition composition) throws IOException {
  AnimatableTextProperties anim = null;

  reader.beginObject();
  while (reader.hasNext()) {
    switch (reader.nextName()) {
      case "a":
        anim = parseAnimatableTextProperties(reader, composition);
        break;
      default:
        reader.skipValue();
    }
  }
  reader.endObject();
  if (anim == null) {
    // Not sure if this is possible.
    return new AnimatableTextProperties(null, null, null, null);
  }
  return anim;
}
项目:lottie-android    文件:MergePathsParser.java   
static MergePaths parse(JsonReader reader) throws IOException {
  String name = null;
  MergePaths.MergePathsMode mode = null;

  while (reader.hasNext()) {
    switch (reader.nextName()) {
      case "nm":
        name = reader.nextString();
        break;
      case "mm":
        mode =  MergePaths.MergePathsMode.forId(reader.nextInt());
        break;
      default:
        reader.skipValue();
    }
  }

  return new MergePaths(name, mode);
}
项目:lottie-android    文件:LottieCompositionParser.java   
private static void parseLayers(JsonReader reader, LottieComposition composition,
    List<Layer> layers, LongSparseArray<Layer> layerMap) throws IOException {
  int imageCount = 0;
  reader.beginArray();
  while (reader.hasNext()) {
    Layer layer = LayerParser.parse(reader, composition);
    if (layer.getLayerType() == Layer.LayerType.Image) {
      imageCount++;
    }
    layers.add(layer);
    layerMap.put(layer.getId(), layer);

    if (imageCount > 4) {
      L.warn("You have " + imageCount + " images. Lottie should primarily be " +
          "used with shapes. If you are using Adobe Illustrator, convert the Illustrator layers" +
          " to shape layers.");
    }
  }
  reader.endArray();
}
项目:lottie-android    文件:LottieCompositionParser.java   
private static void parseFonts(JsonReader reader, Map<String, Font> fonts) throws IOException {

    reader.beginObject();
    while (reader.hasNext()) {
      switch (reader.nextName()) {
        case "list":
          reader.beginArray();
          while (reader.hasNext()) {
            Font font = FontParser.parse(reader);
            fonts.put(font.getName(), font);
          }
          reader.endArray();
          break;
        default:
          reader.skipValue();
      }
    }
    reader.endObject();
  }
项目:lottie-android    文件:ShapePathParser.java   
static ShapePath parse(
    JsonReader reader, LottieComposition composition) throws IOException {
  String name = null;
  int ind = 0;
  AnimatableShapeValue shape = null;

  while (reader.hasNext()) {
    switch (reader.nextName()) {
      case "nm":
        name = reader.nextString();
        break;
      case "ind":
        ind = reader.nextInt();
        break;
      case "ks":
        shape = AnimatableValueParser.parseShapeData(reader, composition);
        break;
      default:
        reader.skipValue();
    }
  }

  return new ShapePath(name, ind, shape);
}
项目:lottie-android    文件:PointFParser.java   
@Override public PointF parse(JsonReader reader, float scale) throws IOException {
  JsonToken token = reader.peek();
  if (token == JsonToken.BEGIN_ARRAY) {
    return JsonUtils.jsonToPoint(reader, scale);
  } else if (token == JsonToken.BEGIN_OBJECT) {
    return JsonUtils.jsonToPoint(reader, scale);
  } else if (token == JsonToken.NUMBER) {
    // This is the case where the static value for a property is an array of numbers.
    // We begin the array to see if we have an array of keyframes but it's just an array
    // of static numbers instead.
    PointF point = new PointF((float) reader.nextDouble() * scale, (float) reader.nextDouble() * scale);
    while (reader.hasNext()) {
      reader.skipValue();
    }
    return point;
  } else {
    throw new IllegalArgumentException("Cannot convert json to point. Next token is " + token);
  }
}
项目:lottie-android    文件:JsonUtils.java   
private static PointF jsonObjectToPoint(JsonReader reader, float scale) throws IOException {
  float x = 0f;
  float y = 0f;
  reader.beginObject();
  while (reader.hasNext()) {
    switch (reader.nextName()) {
      case "x":
        x = valueFromObject(reader);
        break;
      case "y":
        y = valueFromObject(reader);
        break;
      default:
        reader.skipValue();
    }
  }
  reader.endObject();
  return new PointF(x * scale, y * scale);
}
项目:lottie-android    文件:JsonUtils.java   
static float valueFromObject(JsonReader reader) throws IOException {
  JsonToken token = reader.peek();
  switch (token) {
    case NUMBER:
      return (float) reader.nextDouble();
    case BEGIN_ARRAY:
      reader.beginArray();
      float val = (float) reader.nextDouble();
      while (reader.hasNext()) {
        reader.skipValue();
      }
      reader.endArray();
      return val;
    default:
      throw new IllegalArgumentException("Unknown value for token of type " + token);
  }
}
项目:segment-android    文件:JsonUtils.java   
/** Reads the next value in the {@link JsonReader}. */
private static Object readValue(JsonReader reader) throws IOException {
  JsonToken token = reader.peek();
  switch (token) {
    case BEGIN_OBJECT:
      return readerToMap(reader);
    case BEGIN_ARRAY:
      return readerToList(reader);
    case BOOLEAN:
      return reader.nextBoolean();
    case NULL:
      reader.nextNull(); // consume the null token
      return null;
    case NUMBER:
      return reader.nextDouble();
    case STRING:
      return reader.nextString();
    default:
      throw new IllegalStateException("Invalid token " + token);
  }
}
项目:nuntius-android    文件:IncomingMessage.java   
public IncomingMessage(String message) throws IOException {
    JsonReader reader = new JsonReader(new StringReader(message));
    reader.beginObject();
    if (reader.hasNext()) {
        String name = reader.nextName();
        if (name.equals("event")) {
            String typeString = reader.nextString();
            if (typeString.equals("action")) {
                eventType = EventType.ACTION;
            } else if (typeString.equals("dismiss")) {
                eventType = EventType.DISMISS;
            } else if (typeString.equals("blacklist")) {
                eventType = EventType.BLACKLIST;
            } else if (typeString.equals("sms")) {
                eventType = EventType.SMS;
            }
        }
    }
    jsonReader = reader;
}
项目:BusMan    文件:ConfigureTagActivity.java   
@Override
public void readJson(JsonReader reader) throws IOException {
    reader.beginObject();
    while (reader.hasNext()) {
        String name = reader.nextName();

        switch (name) {
            case FIELD_ID:
                this.id = reader.nextString();
                break;
            case FIELD_NAME:
                this.name = reader.nextString();
                break;
            case FIELD_COMMENT:
                reader.skipValue();
                break;
            default:
                if (Log.isLoggable(TAG, Log.WARN)) {
                    Log.w(TAG, "Unknown rider key: " + name);
                }
                reader.skipValue();
                break;
        }
    }
    reader.endObject();
}
项目:SMSGateway    文件:JSONParser.java   
public SMSMessage parse() throws IOException {
    JsonReader jsonReader = new JsonReader(new StringReader(jsonString));

    String recipient = null;
    String message = null;

    jsonReader.beginObject();
    while (jsonReader.hasNext()) {
        String attributeName = jsonReader.nextName();
        if (attributeName.equals("sender_recipient")) {
            recipient = jsonReader.nextString();
        } else if (attributeName.equals("text")) {
            message = jsonReader.nextString();
        } else {
            jsonReader.skipValue();
        }
    }
    jsonReader.endObject();

    return new SMSMessage(recipient, message);
}
项目:autoparse-json    文件:JsonParserUtils.java   
/**
 * Parse the next value as an object, but do not attempt to convert it or any children to a
 * known type. The returned object will be a {@link JSONObject} and all children will be
 * JSONObjects, JSONArrays, and primitives.
 *
 * @param reader The JsonReader to use. Calls to {@link JsonReader#beginObject()} and {@link
 * JsonReader#endObject()} will be taken care of by this method.
 * @param key The key corresponding to the current value. This is used to make more useful error
 * messages.
 */
public static JSONObject parseAsJsonObject(JsonReader reader, String key) throws IOException {
    if (handleNull(reader)) {
        return null;
    }
    assertType(reader, key, JsonToken.BEGIN_OBJECT);
    JSONObject result = new JSONObject();
    reader.beginObject();
    while (reader.hasNext()) {
        try {
            result.put(reader.nextName(), parseNextValue(reader, false));
        } catch (JSONException e) {
            throw new RuntimeException("This should be impossible.", e);
        }
    }
    reader.endObject();
    return result;
}
项目:nexus-gallery    文件:ImagePreset.java   
/**
 * populates preset from JSON stream
 *
 * @param sreader a JSON string
 * @return true on success if false ImagePreset is undefined
 */
public boolean readJson(JsonReader sreader) throws IOException {
    sreader.beginObject();

    while (sreader.hasNext()) {
        String name = sreader.nextName();
        FilterRepresentation filter = creatFilterFromName(name);
        if (filter == null) {
            Log.w(LOGTAG, "UNKNOWN FILTER! " + name);
            return false;
        }
        filter.deSerializeRepresentation(sreader);
        addFilter(filter);
    }
    sreader.endObject();
    return true;
}