Class JsonUtil

java.lang.Object
io.grpc.internal.JsonUtil

public class JsonUtil extends Object
Helper utility to work with JSON values in Java types. Includes the JSON dialect used by Protocol Buffers.
  • Field Details

    • DURATION_SECONDS_MIN

      private static final long DURATION_SECONDS_MIN
      See Also:
    • DURATION_SECONDS_MAX

      private static final long DURATION_SECONDS_MAX
      See Also:
    • NANOS_PER_SECOND

      private static final long NANOS_PER_SECOND
  • Constructor Details

    • JsonUtil

      public JsonUtil()
  • Method Details

    • getList

      @Nullable public static List<?> getList(Map<String,?> obj, String key)
      Gets a list from an object for the given key. If the key is not present, this returns null. If the value is not a List, throws an exception.
    • getListOfObjects

      @Nullable public static List<Map<String,?>> getListOfObjects(Map<String,?> obj, String key)
      Gets a list from an object for the given key, and verifies all entries are objects. If the key is not present, this returns null. If the value is not a List or an entry is not an object, throws an exception.
    • getListOfStrings

      @Nullable public static List<String> getListOfStrings(Map<String,?> obj, String key)
      Gets a list from an object for the given key, and verifies all entries are strings. If the key is not present, this returns null. If the value is not a List or an entry is not a string, throws an exception.
    • getObject

      @Nullable public static Map<String,?> getObject(Map<String,?> obj, String key)
      Gets an object from an object for the given key. If the key is not present, this returns null. If the value is not a Map, throws an exception.
    • getNumberAsDouble

      @Nullable public static Double getNumberAsDouble(Map<String,?> obj, String key)
      Gets a number from an object for the given key. If the key is not present, this returns null. If the value does not represent a double, throws an exception.
    • getNumberAsFloat

      @Nullable public static Float getNumberAsFloat(Map<String,?> obj, String key)
      Gets a number from an object for the given key. If the key is not present, this returns null. If the value does not represent a float, throws an exception.
    • getNumberAsInteger

      @Nullable public static Integer getNumberAsInteger(Map<String,?> obj, String key)
      Gets a number from an object for the given key, casted to an integer. If the key is not present, this returns null. If the value does not represent an integer, throws an exception.
    • getNumberAsLong

      public static Long getNumberAsLong(Map<String,?> obj, String key)
      Gets a number from an object for the given key, casted to an long. If the key is not present, this returns null. If the value does not represent a long integer, throws an exception.
    • getString

      @Nullable public static String getString(Map<String,?> obj, String key)
      Gets a string from an object for the given key. If the key is not present, this returns null. If the value is not a String, throws an exception.
    • getStringAsDuration

      public static Long getStringAsDuration(Map<String,?> obj, String key)
      Gets a string from an object for the given key, parsed as a duration (defined by protobuf). If the key is not present, this returns null. If the value is not a String or not properly formatted, throws an exception.
    • getBoolean

      @Nullable public static Boolean getBoolean(Map<String,?> obj, String key)
      Gets a boolean from an object for the given key. If the key is not present, this returns null. If the value is not a Boolean, throws an exception.
    • checkObjectList

      public static List<Map<String,?>> checkObjectList(List<?> rawList)
      Casts a list of unchecked JSON values to a list of checked objects in Java type. If the given list contains a value that is not a Map, throws an exception.
    • checkStringList

      public static List<String> checkStringList(List<?> rawList)
      Casts a list of unchecked JSON values to a list of String. If the given list contains a value that is not a String, throws an exception.
    • parseDuration

      private static long parseDuration(String value) throws ParseException
      Parse from a string to produce a duration. Copy of Durations.parse(java.lang.String).
      Returns:
      A Duration parsed from the string.
      Throws:
      ParseException - if parsing fails.
    • parseNanos

      private static int parseNanos(String value) throws ParseException
      Copy of Timestamps.parseNanos(java.lang.String).
      Throws:
      ParseException
    • normalizedDuration

      private static long normalizedDuration(long seconds, int nanos)
      Copy of Durations.normalizedDuration(long, int).
    • durationIsValid

      private static boolean durationIsValid(long seconds, int nanos)
      Returns true if the given number of seconds and nanos is a valid Duration. The seconds value must be in the range [-315,576,000,000, +315,576,000,000]. The nanos value must be in the range [-999,999,999, +999,999,999].

      Note: Durations less than one second are represented with a 0 seconds field and a positive or negative nanos field. For durations of one second or more, a non-zero value for the nanos field must be of the same sign as the seconds field.

      Copy of

      invalid reference
      com.google.protobuf.util.Duration#isValid
      .

    • saturatedAdd

      private static long saturatedAdd(long a, long b)
      Returns the sum of a and b unless it would overflow or underflow in which case Long.MAX_VALUE or Long.MIN_VALUE is returned, respectively.

      Copy of LongMath.saturatedAdd(long, long).