Class JSONCodec

java.lang.Object
aQute.lib.json.JSONCodec

public class JSONCodec extends Object
This is a simple JSON Coder and Encoder that uses the Java type system to convert data objects to JSON and JSON to (type safe) Java objects. The conversion is very much driven by classes and their public fields. Generic information, when present is taken into account.

Usage patterns to encode:
 JSONCoder codec = new JSONCodec(); // assert "1".equals(
codec.enc().to().put(1).toString()); assert "[1,2,3]".equals(
codec.enc().to().put(Arrays.asList(1,2,3).toString()); Map m = new HashMap();
m.put("a", "A"); assert "{\"a\":\"A\"}".equals(
codec.enc().to().put(m).toString()); static class D { public int a; } D d =
new D(); d.a = 41; assert "{\"a\":41}".equals(
codec.enc().to().put(d).toString());
It is possible to redirect the encoder to another output (default is a string). See Encoder.to(),Encoder.to(File), Encoder.to(OutputStream), Encoder.to(Appendable). To reset the string output call Encoder.to().

This Codec class can be used in a concurrent environment. The Decoders and Encoders, however, must only be used in a single thread.

Will now use hex for encoding byte arrays

  • Field Details

  • Constructor Details

    • JSONCodec

      public JSONCodec()
  • Method Details

    • enc

      public Encoder enc()
      Create a new Encoder with the state and appropriate API.
      Returns:
      an Encoder
    • dec

      public Decoder dec()
      Create a new Decoder with the state and appropriate API.
      Returns:
      a Decoder
    • parseString

      protected String parseString(Decoder r) throws Exception
      Throws:
      Exception
    • setIgnorenull

      public JSONCodec setIgnorenull(boolean ignorenull)
      Ignore null values in output and input
      Parameters:
      ignorenull -
      Returns:
      this
    • isIgnorenull

      public boolean isIgnorenull()
    • addHandler

      public JSONCodec addHandler(Type type, Handler handler)
      Add a new local handler
    • keyword

      public static String keyword(String name)
      This maps a name of a Java construct, which cannot contain Java keywords, to a keyword if it ends with a KEYWORD_SUFFIX and the name without the suffix maps to a Java keyword.
      Parameters:
      name - the name
      Returns:
      either the name when it wasn't a keyword or a keyword
    • name

      public static String name(String key)
    • promiscuous

      public JSONCodec promiscuous()
    • isStartCharacter

      public boolean isStartCharacter(int c)