Package com.veeva.vault.sdk.api.json


package com.veeva.vault.sdk.api.json
This package provides interfaces to manage reading and writing JSON data.

Read

The following is a simple example of reading values from a JSON String:
 
     JsonService jsonService = ServiceLocator.locate(JsonService.class);

     String jsonString
         = "{"
         + "\"StringProperty\": \"StringValue\","
         + "\"BooleanProperty\": true,"
         + "\"ArrayProperty\": [1,2,3]"
         + "}";

     JsonData jsonData = jsonService.readJson(jsonString);
     JsonObject jsonObject = jsonData.getJsonObject();

     // Get values from JSON object
     String stringProperty = jsonObject.getValue("StringProperty", JsonValueType.STRING);
     Boolean booleanProperty = jsonObject.getValue("BooleanProperty", JsonValueType.BOOLEAN);
     JsonArray arrayProperty = jsonObject.getValue("ArrayProperty", JsonValueType.ARRAY);

     // Get values from JSON array
     BigDecimal arrayVal0 = arrayProperty.getValue(0, JsonValueType.NUMBER);
     BigDecimal arrayVal1 = arrayProperty.getValue(1, JsonValueType.NUMBER);
     BigDecimal arrayVal2 = arrayProperty.getValue(2, JsonValueType.NUMBER);
 
 
The JsonObject.getProperties() method can be used to read the properties of the JsonObject, allowing additional logic to be performed on the JsonObject, for example:
 
 private Map<String, Object> convertJsonToMap(JsonObject jsonObject) {
   	Map<String, Object> jsonMap = VaultCollections.newMap();
   	Map<String, JsonProperty> properties = jsonObject.getProperties();
   	for (String key : properties.keySet()) {
   		JsonProperty property = properties.get(key);
   		JsonValueType valueType = property.getJsonValueType();
   		jsonMap.put(key, jsonObject.getValue(key, valueType));
   	}
   	return jsonMap;
 }
 
 

Write

The following is a simple example of writing a JSON String:
 
     JsonService jsonService = ServiceLocator.locate(JsonService.class);

     JsonObjectBuilder objectBuilder = jsonService.newJsonObjectBuilder();
     objectBuilder.setValue("StringProperty", "StringValue");
     objectBuilder.setValue("BooleanProperty", Boolean.TRUE);

     JsonArrayBuilder arrayBuilder = jsonService.newJsonArrayBuilder();
     JsonArray jsonArray = arrayBuilder.add(1).add(2).add(3).build();
     objectBuilder.setValue("ArrayProperty", jsonArray);

     JsonObject jsonObject = objectBuilder.build();
     String jsonString = jsonObject.asString();
 
 
JsonObjects and JsonArrays can also be created by adding properties/values to existing JsonObjects or JsonArrays, for example:
 
     JsonObjectBuilder extendedObjectBuilder = jsonService.newJsonObjectBuilder(jsonObject);
     extendedObjectBuilder.setValue("numberProperty", new BigDecimal(10));
     JsonObject extendedJsonObject = extendedObjectBuilder.build();

     JsonArrayBuilder extendedArrayBuilder = jsonService.newJsonArrayBuilder(jsonArray);
     JsonArray extendedJsonArray = extendedArrayBuilder.add(4).build();