code: public static Object jsonValue(JsonReader reader) throws IOException {
          switch (reader.peek()) {
              case STRING:
                  return reader.nextString();
              case BOOLEAN:
                  return reader.nextBoolean();
              case NUMBER:
                  try {
                      return reader.nextLong();
                  } catch (NumberFormatException nfex) {
                      return reader.nextDouble();
                  }
              case BEGIN_ARRAY:
                  ArrayList<Object> list = new ArrayList<>();
                  reader.beginArray();
                  while (reader.peek() != JsonToken.END_ARRAY) {
                      list.add(jsonValue(reader));
                  }
                  reader.endArray();
                  return list;
              case BEGIN_OBJECT:
                  return jsonMap(reader);
              default:
                  reader.skipValue();
          }
          return null;
      }
docs: Transforms a JSON object (stream) into an object.