Serializing into JSON
If you want to query JSON strings that are stored in Hazelcast, you can serialize them, using HazelcastJsonValue
.
HazelcastJsonValue
is a lightweight wrapper that tells a Hazelcast cluster to treat a given string as JSON. Using this information, members can create metadata to optimize queries for data in the string. As a result, it’s best to use HazelcastJsonValue
when you want to be able to query JSON values stored in Hazelcast clusters.
Serializing into HazelcastJsonValue
To serialize a JSON string into HazelcastJsonValue
, pass the string directly to the new HazelcastJsonValue()
constructor.
Hazelcast does not validate the given string. It is your responsibility to use a well-formed JSON string as a HazelcastJsonValue .
|
String person1 = "{ \"name\": \"John\", \"age\": 35 }";
String person2 = "{ \"name\": \"Jane\", \"age\": 24 }";
String person3 = "{ \"name\": \"Trey\", \"age\": 17 }";
String person4 = "{ \"name\": \"Phil\", \"age\": 30 }";
String person5 = "{ \"name\": \"May\"}";
IMap<Integer, HazelcastJsonValue> idPersonMap = instance.getMap("jsonValues");
idPersonMap.put(1, new HazelcastJsonValue(person1));
idPersonMap.put(2, new HazelcastJsonValue(person2));
idPersonMap.put(3, new HazelcastJsonValue(person3));
idPersonMap.put(4, new HazelcastJsonValue(person4));
idPersonMap.put(5, new HazelcastJsonValue(person4));
JSON Metadata
By default, for each HazelcastJsonValue
object stored in a map, Hazelcast also stores a metadata object, which helps you to query JSON faster.
This metadata object is created every time
a HazelcastJsonValue
is put into a map and is stored in the on-heap or off-heap
memory, depending on the map’s in-memory format setting.
Depending on your application’s needs, you may want to turn off metadata creation to both decrease latency when adding objects to a map and to increase throughput. You can configure this setting using a metadata policy.
Hazelcast Clients
HazelcastJsonValue
does not require any Java classes on the member. As a result, clients can serialize data into JSON without any need to upload code to the member.
Clients do not validate JSON strings. If you store malformed JSON strings on the cluster, the member will log formatting errors only when you try to query the JSON data. |
SQL
When you map columns to a json
data type, SQL treats any strings in that column as JSON. As a result, you can either use raw JSON strings or HazelcastJsonValue
.
To learn more about JSON in SQL, see Working with JSON Data in SQL.