@Override public void formatTo(Formatter formatter, int flags, int width, int precision) { // TODO actually support more stuff here for int/double formatting // this is useful already since you can shove the value into a formatted string formatter.format(Locale.ENGLISH, "%s", asString()); } }
@Override public boolean isEmpty() { if(value == null) { return true; } else { return StringUtils.isEmpty(asString()); } }
@Override public long asLong() { if(type == JsonType.number) { return ((Number)value).longValue(); } else { try { return Long.valueOf(asString()); } catch (NumberFormatException e) { throw new JsonTypeMismatchException("not a long '"+value+"'"); } } }
@Override public float asFloat() { if(type == JsonType.number) { return ((Number)value).floatValue(); } else { try { return Float.valueOf(asString()); } catch (NumberFormatException e) { throw new JsonTypeMismatchException("not a float '"+value+"'"); } } }
/** * @return the raw value as an Object. */ @JsonValue public Object value() { if(isString()) { return asString(); } else { return value; } }
@Override public double asDouble() { if(type == JsonType.number) { return ((Number)value).doubleValue(); } else { try { return Double.valueOf(asString()); } catch (NumberFormatException e) { throw new JsonTypeMismatchException("not a double '"+value+"'"); } } }
@Override public int asInt() { if(type == JsonType.number) { return ((Number)value).intValue(); } else { try { return Integer.valueOf(asString()); } catch (NumberFormatException e) { throw new JsonTypeMismatchException("not a integer '"+value+"'"); } } }
@Override public Number asNumber() { if(type == JsonType.number) { return (Number)value; } else { try { // note, this may not work as you want for BigDecimals/BigIntegers. return NumberFormat.getInstance(Locale.ENGLISH).parse(asString()); } catch (ParseException e) { throw new JsonTypeMismatchException("not a parsable Number '"+value+"'"); } } }
private static void append(Element e, JsonPrimitive p) { e.appendChild(p.asString()); }
public String[] asStringArray() { String[] result = new String[size()]; int i=0; for(JsonElement e: this) { result[i++] = e.asPrimitive().asString(); } return result; }
public void shouldReturnAsString() { assertThat(primitive(1).asString(), is("1")); }
/** * Convenient method providing a few alternate ways of extracting elements * from a JsonArray. * * @param label label * @return the first element in the array matching the label or the n-th * element if the label is an integer and the element an object or * an array. */ public JsonElement get(String label) { int i = 0; try{ for (JsonElement e : this) { if(e.isPrimitive() && e.asPrimitive().asString().equals(label)) { return e; } else if((e.isObject() || e.isArray()) && Integer.valueOf(label).equals(i)) { return e; } i++; } } catch(NumberFormatException e) { // fail gracefully return null; } // the element was not found return null; }
public void shouldHandleConversions() { JsonPrimitive pi = primitive(Math.PI); assertThat(pi.asLong(), is(3l)); assertThat(pi.asInt(), is(3)); assertThat(pi.asDouble(), is(Math.PI)); assertThat(pi.asString(), is(""+Math.PI)); }
@Test(dataProvider="numbers") public void shouldHandleVeryLargeNumbers(String input, Class<?> expectedType) { JsonPrimitive primitive = parser.parse(input).asPrimitive(); assertThat(primitive.asString()).isEqualTo(input); assertThat(primitive.value().getClass()).isEqualTo(expectedType); }
private static void serialize(BsonGenerator generator, JsonPrimitive p) throws JsonGenerationException, IOException { if(p.isBoolean()) { generator.writeBoolean(p.asBoolean()); } else if(p.isNumber()) { if(p.asString().contains(".")) { generator.writeNumber(p.asDouble()); } else { generator.writeNumber(p.asLong()); } } else if(p.isString()) { generator.writeString(p.asString()); } else { generator.writeNull(); } } }
public static NSObject toNsObject(JsonPrimitive p) { NSObject o; if(p.isBoolean()) { o = new NSNumber(p.asBoolean()); } else if(p.isNumber()) { if(p.asString().contains(".")) { o = new NSNumber(p.asDouble()); } else { o = new NSNumber(p.asLong()); } } else if(p.isString()) { o = new NSString(p.asString()); } else { o = null; } return o; } }
public boolean endObjectEntry() { JsonElement value = stack.pollLast(); JsonElement e = stack.peekLast(); if (e.isPrimitive()) { // field name e = stack.pollLast(); JsonObject container = stack.peekLast().asObject(); String key = e.asPrimitive().asString(); container.put(key, value); if(container.size()>settings.upgradeThresholdToMapBasedJsonObject() && !MapBasedJsonObject.class.equals(container.getClass())) { JsonElement removed = stack.pollLast(); MapBasedJsonObject newContainer = new MapBasedJsonObject(removed.asObject()); stack.add(newContainer); } } return true; }
public void shouldExtractValue() { JsonObject o = object().put("a", object().put("b", object().put("c", "d").get()).get()).get(); Assert.assertEquals("d", o.get("a", "b", "c").asPrimitive().asString()); assertThat(o.maybeGet("a", "b", "c").isPresent()).isTrue(); assertThat(o.maybeGetString("a", "b", "c").get()).isEqualTo("d"); }
public void shouldGetByLabel() { JsonElement element = array("foo", "bar").get("bar"); AssertJUnit.assertNotNull(element); AssertJUnit.assertEquals("bar", element.asPrimitive().asString()); }