A plugin for the Jackson streaming JSON processor v2.9.x that adds support for reading and writing JSON objects in the Rison serialization format. Support for Jackson v2.1.x, v2.0.x, and v1.9.x is also available.
Rison expresses the exact same data structures as JSON, but is much more compact and readable than JSON when encoded in a URI.
See https://github.com/Nanonid/rison for more information about Rison.
In your code, create a RisonFactory instead of a JsonFactory. Then read and write objects just
as you do regular JSON objects. All the Jackson mapper facilities are available with Rison.
import com.bazaarvoice.jackson.rison.RisonFactory;
ObjectMapper RISON = new ObjectMapper(new RisonFactory());
String string = "(a:0,b:foo,c:'23skidoo')";
Map map = RISON.readValue(string, Map.class);
...
RISON.writeValueAsString(map);If you know the value you wish to serialize is always an object, you can configure the RisonFactory
to omit the containing ( and ) characters.
ObjectMapper O_RISON = new ObjectMapper(new RisonFactory().
enable(RisonGenerator.Feature.O_RISON).
enable(RisonParser.Feature.O_RISON));
String string = "a:0,b:foo,c:'23skidoo'";
Map map = O_RISON.readValue(string, Map.class);
...
System.out.println(O_RISON.writeValueAsString(map));If you know the value you wish to serialize is always an array, you can configure the RisonFactory
to omit the containing !( and ) characters.
ObjectMapper A_RISON = new ObjectMapper(new RisonFactory().
enable(RisonGenerator.Feature.A_RISON).
enable(RisonParser.Feature.A_RISON));
String string = "item1,item2,item3";
List list = A_RISON.readValue(string, List.class);
...
System.out.println(A_RISON.writeValueAsString(list));See the Rison page for implementations in JavaScript, Python and Ruby.