com.fasterxml.jackson.core.JsonToken#END_ARRAY源码实例Demo

下面列出了com.fasterxml.jackson.core.JsonToken#END_ARRAY 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: gvnix   文件: DataBinderDeserializer.java
/**
 * Deserializes JSON array into Map<String, String> format to use it in a
 * Spring {@link DataBinder}.
 * <p/>
 * Iterate over every array's item to generate a prefix for property names
 * on DataBinder style (
 * <em>{prefix}[{index}].<em>) and delegates on {@link #readField(JsonParser, DeserializationContext, JsonToken, String)}
 * 
 * @param parser JSON parser
 * @param ctxt context
 * @param prefix array dataBinder path
 * @return
 * @throws IOException
 * @throws JsonProcessingException
 */
protected Map<String, String> readArray(JsonParser parser,
        DeserializationContext ctxt, String prefix) throws IOException,
        JsonProcessingException {
    JsonToken t = parser.getCurrentToken();

    if (t == JsonToken.START_ARRAY) {
        t = parser.nextToken();
        // Skip it to locate on first array data token
    }

    // Deserialize array properties
    int i = 0;
    Map<String, String> deserObj = new HashMap<String, String>();
    for (; t != JsonToken.END_ARRAY; t = parser.nextToken()) {
        // Property name must include prefix this way:
        // degrees[0].description
        Map<String, String> field = readField(parser, ctxt, t, prefix
                .concat("[").concat(Integer.toString(i++)).concat("]."));
        deserObj.putAll(field);
    }
    return deserObj;
}
 
源代码2 项目: swagger-inflector   文件: DirectionDeserializer.java
@Override
public Set<Configuration.Direction> deserialize(JsonParser jp,
        DeserializationContext ctxt) throws IOException {
    final JsonToken token = jp.getCurrentToken();
    if (token == JsonToken.VALUE_FALSE) {
        return EnumSet.noneOf(Configuration.Direction.class);
    } else if (token == JsonToken.VALUE_TRUE) {
        return EnumSet.allOf(Configuration.Direction.class);
    } else if (token == JsonToken.START_ARRAY) {
        final Set<Configuration.Direction> items = EnumSet.noneOf(Configuration.Direction.class);
        while (true) {
            final JsonToken next = jp.nextToken();
            if (next == JsonToken.VALUE_STRING) {
                final String name = jp.getText();
                items.add(Configuration.Direction.valueOf(name));
            } else if (next == JsonToken.END_ARRAY) {
                return items;
            } else {
                break;
            }
        }
    }
    throw ctxt.mappingException(Configuration.Direction.class);
}
 
源代码3 项目: buck   文件: BuildFilePythonResultDeserializer.java
private static List<Object> deserializeList(JsonParser jp) throws IOException {
  ImmutableList.Builder<Object> builder = ImmutableList.builder();
  JsonToken token;
  while ((token = jp.nextToken()) != JsonToken.END_ARRAY) {
    Object obj = deserializeRecursive(jp, token);
    if (obj != null) {
      builder.add(obj);
    }
    else {
      // null elements can't be added to ImmutableList, an NPE will be thrown.
      // Throw a meaningful exception here instead.
      StringBuilder message = new StringBuilder();
      message.append("null value can't be added to [");
      for (Object element: builder.build()) {
        message.append("'").append(element).append("'").append(", ");
      }
      message.append("]");
      throw new IllegalArgumentException(message.toString());
    }
  }
  if (token != JsonToken.END_ARRAY) {
    throw new JsonParseException(jp, "Missing expected END_ARRAY");
  }
  return builder.build();
}
 
@Override
protected T _deserializeContents(JsonParser p, DeserializationContext ctxt) throws IOException,
        JsonProcessingException {
    JsonDeserializer<?> valueDes = _valueDeserializer;
    JsonToken t;
    final TypeDeserializer typeDeser = _valueTypeDeserializer;
    T set = createMultiset();

    while ((t = p.nextToken()) != JsonToken.END_ARRAY) {
        Object value;

        if (t == JsonToken.VALUE_NULL) {
            if (_skipNullValues) {
                continue;
            }
            value = _nullProvider.getNullValue(ctxt);
        } else if (typeDeser == null) {
            value = valueDes.deserialize(p, ctxt);
        } else {
            value = valueDes.deserializeWithType(p, ctxt, typeDeser);
        }
        set.add(value);
    }
    return set;
}
 
源代码5 项目: kripton   文件: Bean64BTable.java
/**
 * for attribute valueMapStringBean parsing
 */
public static Map<String, Bean64B> parseValueMapStringBean(byte[] input) {
  if (input==null) {
    return null;
  }
  KriptonJsonContext context=KriptonBinder.jsonBind();
  try (JacksonWrapperParser wrapper=context.createParser(input)) {
    JsonParser jacksonParser=wrapper.jacksonParser;
    // START_OBJECT
    jacksonParser.nextToken();
    // value of "element"
    jacksonParser.nextValue();
    Map<String, Bean64B> result=null;
    if (jacksonParser.currentToken()==JsonToken.START_ARRAY) {
      HashMap<String, Bean64B> collection=new HashMap<>();
      String key=null;
      Bean64B value=null;
      while (jacksonParser.nextToken() != JsonToken.END_ARRAY) {
        jacksonParser.nextValue();
        key=jacksonParser.getText();
        jacksonParser.nextValue();
        if (jacksonParser.currentToken()==JsonToken.START_OBJECT) {
          value=bean64BBindMap.parseOnJackson(jacksonParser);
        }
        collection.put(key, value);
        key=null;
        value=null;
        jacksonParser.nextToken();
      }
      result=collection;
    }
    return result;
  } catch(Exception e) {
    e.printStackTrace();
    throw(new KriptonRuntimeException(e.getMessage()));
  }
}
 
源代码6 项目: kripton   文件: StringBeanTable.java
/**
 * for attribute value2 parsing
 */
public static String[] parseValue2(byte[] input) {
  if (input==null) {
    return null;
  }
  KriptonJsonContext context=KriptonBinder.jsonBind();
  try (JacksonWrapperParser wrapper=context.createParser(input)) {
    JsonParser jacksonParser=wrapper.jacksonParser;
    // START_OBJECT
    jacksonParser.nextToken();
    // value of "element"
    jacksonParser.nextValue();
    String[] result=null;
    if (jacksonParser.currentToken()==JsonToken.START_ARRAY) {
      ArrayList<String> collection=new ArrayList<>();
      String item=null;
      while (jacksonParser.nextToken() != JsonToken.END_ARRAY) {
        if (jacksonParser.currentToken()==JsonToken.VALUE_NULL) {
          item=null;
        } else {
          item=jacksonParser.getText();
        }
        collection.add(item);
      }
      result=CollectionUtils.asArray(collection, new String[collection.size()]);
    }
    return result;
  } catch(Exception e) {
    e.printStackTrace();
    throw(new KriptonRuntimeException(e.getMessage()));
  }
}
 
源代码7 项目: kripton   文件: ShortBeanTable.java
/**
 * for attribute value2 parsing
 */
public static Short[] parseValue2(byte[] input) {
  if (input==null) {
    return null;
  }
  KriptonJsonContext context=KriptonBinder.jsonBind();
  try (JacksonWrapperParser wrapper=context.createParser(input)) {
    JsonParser jacksonParser=wrapper.jacksonParser;
    // START_OBJECT
    jacksonParser.nextToken();
    // value of "element"
    jacksonParser.nextValue();
    Short[] result=null;
    if (jacksonParser.currentToken()==JsonToken.START_ARRAY) {
      ArrayList<Short> collection=new ArrayList<>();
      Short item=null;
      while (jacksonParser.nextToken() != JsonToken.END_ARRAY) {
        if (jacksonParser.currentToken()==JsonToken.VALUE_NULL) {
          item=null;
        } else {
          item=jacksonParser.getShortValue();
        }
        collection.add(item);
      }
      result=CollectionUtils.asShortArray(collection);
    }
    return result;
  } catch(Exception e) {
    e.printStackTrace();
    throw(new KriptonRuntimeException(e.getMessage()));
  }
}
 
源代码8 项目: synapse   文件: SnapshotParser.java
private ChannelPosition processSequenceNumbers(final JsonParser parser) throws IOException {
    final ImmutableMap.Builder<String, ShardPosition> shardPositions = builder();

    String shardName = null;
    String sequenceNumber = null;
    while (parser.nextToken() != JsonToken.END_ARRAY) {
        JsonToken currentToken = parser.currentToken();
        switch (currentToken) {
            case FIELD_NAME:
                switch (parser.getValueAsString()) {
                    case "shard":
                        parser.nextToken();
                        shardName = parser.getValueAsString();
                        break;
                    case "sequenceNumber":
                        parser.nextToken();
                        sequenceNumber = parser.getValueAsString();
                        break;
                    default:
                        break;
                }
                break;
            case END_OBJECT:
                if (shardName != null) {
                    // TODO: "0" kann entfernt werden, wenn keine Snapshots mit "0" für HORIZON mehr exisiteren.
                    final ShardPosition shardPosition = sequenceNumber != null && !sequenceNumber.equals("0") && !sequenceNumber.equals("")
                            ? fromPosition(shardName, sequenceNumber)
                            : fromHorizon(shardName);
                    shardPositions.put(shardName, shardPosition);
                }
                shardName = null;
                sequenceNumber = null;
                break;
            default:
                break;
        }
    }
    return channelPosition(shardPositions.build().values());
}
 
源代码9 项目: kripton   文件: CountryTable.java
/**
 * for attribute translatedName parsing
 */
public static Map<Translation, String> parseTranslatedName(byte[] input) {
  if (input==null) {
    return null;
  }
  KriptonJsonContext context=KriptonBinder.jsonBind();
  try (JacksonWrapperParser wrapper=context.createParser(input)) {
    JsonParser jacksonParser=wrapper.jacksonParser;
    // START_OBJECT
    jacksonParser.nextToken();
    // value of "element"
    jacksonParser.nextValue();
    Map<Translation, String> result=null;
    if (jacksonParser.currentToken()==JsonToken.START_ARRAY) {
      HashMap<Translation, String> collection=new HashMap<>();
      Translation key=null;
      String value=null;
      while (jacksonParser.nextToken() != JsonToken.END_ARRAY) {
        jacksonParser.nextValue();
         {
          String tempEnum=jacksonParser.getText();
          key=StringUtils.hasText(tempEnum)?Translation.valueOf(tempEnum):null;
        }
        jacksonParser.nextValue();
        if (jacksonParser.currentToken()!=JsonToken.VALUE_NULL) {
          value=jacksonParser.getText();
        }
        collection.put(key, value);
        key=null;
        value=null;
        jacksonParser.nextToken();
      }
      result=collection;
    }
    return result;
  } catch(Exception e) {
    e.printStackTrace();
    throw(new KriptonRuntimeException(e.getMessage()));
  }
}
 
源代码10 项目: kripton   文件: Bean2Table.java
/**
 * for attribute valueCharacterSet parsing
 */
public static Set<Character> parseValueCharacterSet(byte[] input) {
  if (input==null) {
    return null;
  }
  KriptonJsonContext context=KriptonBinder.jsonBind();
  try (JacksonWrapperParser wrapper=context.createParser(input)) {
    JsonParser jacksonParser=wrapper.jacksonParser;
    // START_OBJECT
    jacksonParser.nextToken();
    // value of "element"
    jacksonParser.nextValue();
    Set<Character> result=null;
    if (jacksonParser.currentToken()==JsonToken.START_ARRAY) {
      HashSet<Character> collection=new HashSet<>();
      Character item=null;
      while (jacksonParser.nextToken() != JsonToken.END_ARRAY) {
        if (jacksonParser.currentToken()==JsonToken.VALUE_NULL) {
          item=null;
        } else {
          item=Character.valueOf((char)jacksonParser.getIntValue());
        }
        collection.add(item);
      }
      result=collection;
    }
    return result;
  } catch(Exception e) {
    e.printStackTrace();
    throw(new KriptonRuntimeException(e.getMessage()));
  }
}
 
源代码11 项目: kripton   文件: BindBean63SharedPreferences.java
/**
 * for attribute valueMapEnumByte parsing
 */
protected HashMap<EnumType, Byte> parseValueMapEnumByte(String input) {
  if (input==null) {
    return null;
  }
  KriptonJsonContext context=KriptonBinder.jsonBind();
  try (JacksonWrapperParser wrapper=context.createParser(input)) {
    JsonParser jacksonParser=wrapper.jacksonParser;
    // START_OBJECT
    jacksonParser.nextToken();
    // value of "element"
    jacksonParser.nextValue();
    HashMap<EnumType, Byte> result=null;
    if (jacksonParser.currentToken()==JsonToken.START_ARRAY) {
      HashMap<EnumType, Byte> collection=new HashMap<>();
      EnumType key=null;
      Byte value=null;
      while (jacksonParser.nextToken() != JsonToken.END_ARRAY) {
        jacksonParser.nextValue();
         {
          String tempEnum=jacksonParser.getText();
          key=StringUtils.hasText(tempEnum)?EnumType.valueOf(tempEnum):null;
        }
        jacksonParser.nextValue();
        if (jacksonParser.currentToken()!=JsonToken.VALUE_NULL) {
          value=jacksonParser.getByteValue();
        }
        collection.put(key, value);
        key=null;
        value=null;
        jacksonParser.nextToken();
      }
      result=collection;
    }
    return result;
  } catch(Exception e) {
    throw(new KriptonRuntimeException(e.getMessage()));
  }
}
 
源代码12 项目: kripton   文件: BindBean2SharedPreferences.java
/**
 * for attribute valueCharTypeArray parsing
 */
protected char[] parseValueCharTypeArray(String input) {
  if (input==null) {
    return null;
  }
  KriptonJsonContext context=KriptonBinder.jsonBind();
  try (JacksonWrapperParser wrapper=context.createParser(input)) {
    JsonParser jacksonParser=wrapper.jacksonParser;
    // START_OBJECT
    jacksonParser.nextToken();
    // value of "element"
    jacksonParser.nextValue();
    char[] result=null;
    if (jacksonParser.currentToken()==JsonToken.START_ARRAY) {
      ArrayList<Character> collection=new ArrayList<>();
      Character item=null;
      while (jacksonParser.nextToken() != JsonToken.END_ARRAY) {
        if (jacksonParser.currentToken()==JsonToken.VALUE_NULL) {
          item=null;
        } else {
          item=Character.valueOf((char)jacksonParser.getIntValue());
        }
        collection.add(item);
      }
      result=CollectionUtils.asCharacterTypeArray(collection);
    }
    return result;
  } catch(Exception e) {
    e.printStackTrace();
    throw(new KriptonRuntimeException(e.getMessage()));
  }
}
 
源代码13 项目: apiman   文件: JsonImportReader.java
public void readPlanVersions() throws Exception {
    current = nextToken();
    if (current == JsonToken.END_ARRAY) {
        return;
    }
    while (nextToken() != JsonToken.END_ARRAY) {
        // Traverse each plan definition
        while(nextToken() != JsonToken.END_OBJECT) {
            if (jp.getCurrentName().equals(PlanVersionBean.class.getSimpleName())) {
                current = nextToken();
                PlanVersionBean planBean = jp.readValueAs(PlanVersionBean.class);
                dispatcher.planVersion(planBean);
            } else {
                OrgElementsEnum fieldName = OrgElementsEnum.valueOf(jp.getCurrentName());
                current = nextToken();
                switch (fieldName) {
                case Policies:
                    processEntities(PolicyBean.class, new EntityHandler<PolicyBean>() {
                        @Override
                        public void handleEntity(PolicyBean policy) throws Exception {
                            dispatcher.planPolicy(policy);
                        }
                    });
                    break;
                default:
                    throw new RuntimeException("Unhandled entity " + fieldName + " with token " + current);
                }
            }
        }
    }
}
 
源代码14 项目: hollow   文件: HollowJsonAdapter.java
private int addStructuredMap(JsonParser parser, FlatRecordWriter flatRecordWriter, String mapTypeName, HollowMapWriteRecord mapRec) throws IOException {
    JsonToken token = parser.nextToken();
    mapRec.reset();

    HollowMapSchema schema = (HollowMapSchema) hollowSchemas.get(mapTypeName);

    while(token != JsonToken.END_ARRAY) {
        if(token == JsonToken.START_OBJECT) {
            int keyOrdinal = -1, valueOrdinal = -1;
            while(token != JsonToken.END_OBJECT) {

                if(token == JsonToken.START_OBJECT || token == JsonToken.START_ARRAY) {
                    if("key".equals(parser.getCurrentName()))
                        keyOrdinal = parseSubType(parser, flatRecordWriter, token, schema.getKeyType());
                    else if("value".equals(parser.getCurrentName()))
                        valueOrdinal = parseSubType(parser, flatRecordWriter, token, schema.getValueType());
                }

                token = parser.nextToken();
            }

            mapRec.addEntry(keyOrdinal, valueOrdinal);
        }

        token = parser.nextToken();
    }

    return addRecord(schema.getName(), mapRec, flatRecordWriter);
}
 
源代码15 项目: apiman   文件: AbstractJsonReader.java
protected <T> void processEntities(Class<T> klazz, EntityHandler<T> handler) throws Exception {
    while (nextToken() != JsonToken.END_ARRAY) {
        processEntity(klazz, handler);
    }
}
 
源代码16 项目: caravan   文件: CustomSimpleDeserializers.java
@SuppressWarnings("rawtypes")
@Override
public JsonDeserializer<?> findArrayDeserializer(ArrayType type, DeserializationConfig config, BeanDescription beanDesc,
    TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) throws JsonMappingException {

  final Class<?> contentClass = type.getContentType().getRawClass();
  TypeCustomizationFactory factory = provider.factoryForArrayOf(contentClass);

  if (factory != null) {
    final JsonDeserializer des = factory.createDeserializer();
    return new JsonDeserializer() {

      @SuppressWarnings("unchecked")
      @Override
      public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        List result = new LinkedList();

        try {
          while (p.nextToken() != JsonToken.END_ARRAY) {
            Object value = des.deserialize(p, ctxt);
            result.add(value);
          }
        } catch (Exception e) {
          throw new RuntimeException("Unexpected deserialize protobuf error", e);
        }

        Object arrayResult = Array.newInstance(contentClass, result.size());

        int i = 0;
        for (Object o : result) {
          Array.set(arrayResult, i, o);
          i++;
        }

        return arrayResult;
      }
    };
  }

  return super.findArrayDeserializer(type, config, beanDesc, elementTypeDeserializer, elementDeserializer);
}
 
源代码17 项目: termsuite-core   文件: JsonTerminologyIO.java
private static void readCollection(JsonParser jp, Collection<Object> c) throws IOException {
	JsonToken token ;
	while((token = jp.nextToken()) != JsonToken.END_ARRAY) {
		c.add(readTokenObject(jp, token));
	}
}
 
源代码18 项目: wikireverse   文件: WikiMetadata.java
private void loadWikiMetadata() throws IOException, JsonParseException {
	InputStream in = MetadataParser.class
			.getResourceAsStream(WIKI_METADATA_JSON);
	JsonFactory factory = new JsonFactory();
	JsonParser parser = factory.createParser(in);

	String fieldName = "", subdomain = "";

	while (parser.nextToken() != JsonToken.END_OBJECT) {
		fieldName = parser.getCurrentName();

		if (WIKIPEDIAS.equals(fieldName)) {
			while (parser.nextToken() != JsonToken.END_ARRAY) {
				while (parser.nextToken() != JsonToken.END_OBJECT) {
					fieldName = parser.getCurrentName();

					if (SUBDOMAIN.equals(fieldName)) {
						subdomain = parser.nextTextValue();
						wikiSubdomains.add(subdomain);
					}

					if (MAIN_PAGE.equals(fieldName)) {
						wikiMainPages.put(subdomain, parser.nextTextValue());
					}

					if (NAMESPACES.equals(fieldName)) {
						HashSet<String> namespaces = new HashSet<String>();
						parser.nextToken();

						while (parser.nextToken() != JsonToken.END_OBJECT) {
							namespaces.add(parser.getCurrentName());
							parser.nextToken();
						}

						wikiNamespaces.put(subdomain, namespaces);
					}
				}
			}
		}
	}
}
 
源代码19 项目: kripton   文件: PersonBindMap.java
/**
 * parse with jackson
 */
@Override
public Person parseOnJackson(JsonParser jacksonParser) throws Exception {
  Person instance = new Person();
  String fieldName;
  if (jacksonParser.currentToken() == null) {
    jacksonParser.nextToken();
  }
  if (jacksonParser.currentToken() != JsonToken.START_OBJECT) {
    jacksonParser.skipChildren();
    return instance;
  }
  while (jacksonParser.nextToken() != JsonToken.END_OBJECT) {
    fieldName = jacksonParser.getCurrentName();
    jacksonParser.nextToken();

    // Parse fields:
    switch (fieldName) {
        case "name":
          // field name (mapped with "name")
          if (jacksonParser.currentToken()!=JsonToken.VALUE_NULL) {
            instance.name=jacksonParser.getText();
          }
        break;
        case "birthday":
          // field birthday (mapped with "birthday")
          if (jacksonParser.currentToken()!=JsonToken.VALUE_NULL) {
            instance.birthday=DateUtils.read(jacksonParser.getText());
          }
        break;
        case "surname":
          // field surname (mapped with "surname")
          if (jacksonParser.currentToken()!=JsonToken.VALUE_NULL) {
            instance.surname=jacksonParser.getText();
          }
        break;
        case "tags":
          // field tags (mapped with "tags")
          if (jacksonParser.currentToken()==JsonToken.START_ARRAY) {
            ArrayList<String> collection=new ArrayList<>();
            String item=null;
            while (jacksonParser.nextToken() != JsonToken.END_ARRAY) {
              if (jacksonParser.currentToken()==JsonToken.VALUE_NULL) {
                item=null;
              } else {
                item=jacksonParser.getText();
              }
              collection.add(item);
            }
            instance.tags=collection;
          }
        break;
        default:
          jacksonParser.skipChildren();
        break;}
  }
  return instance;
}
 
@Override
public T deserialize(JsonParser p, DeserializationContext ctxt)
        throws IOException {
    Intermediate intermediate = createIntermediate();

    if (p.isExpectedStartArrayToken()) {
        JsonToken t;
        while ((t = p.nextToken()) != JsonToken.END_ARRAY) {
            String str;
            if (t == JsonToken.VALUE_STRING) {
                str = p.getText();
            } else {
                CharSequence cs = (CharSequence) ctxt.handleUnexpectedToken(getValueType(ctxt), p);
                str = cs.toString();
            }
            if (str.length() != 1) {
                ctxt.reportInputMismatch(this,
                                         "Cannot convert a JSON String of length %d into a char element of " +
                                         "char array",
                                         str.length());
            }
            intermediate.add(str.charAt(0));
        }
        return finish(intermediate);
    }

    char[] chars = p.getTextCharacters();
    if (p.getTextOffset() == 0 && p.getTextLength() == chars.length) {
        intermediate.addAll(chars);
    } else {
        int i = 0;
        // first, copy in batches of BATCH_COPY_SIZE
        if ((p.getTextLength() - i) >= BATCH_COPY_SIZE) {
            char[] buf = new char[BATCH_COPY_SIZE];
            do {
                System.arraycopy(chars, p.getTextOffset() + i, buf, 0, BATCH_COPY_SIZE);
                intermediate.addAll(buf);
                i += BATCH_COPY_SIZE;
            } while ((p.getTextLength() - i) >= BATCH_COPY_SIZE);
        }
        // and finally, copy the remainder.
        if (p.getTextLength() > i) {
            char[] tail = Arrays.copyOfRange(
                    chars, p.getTextOffset() + i, p.getTextOffset() + p.getTextLength());
            intermediate.addAll(tail);
        }
    }
    return finish(intermediate);
}