public static byte[] toJson(LoadBalancer loadBalancer) { Slime slime = new Slime(); Cursor root = slime.setObject(); root.setString(idField, loadBalancer.id().serializedForm()); root.setString(hostnameField, loadBalancer.hostname().toString()); loadBalancer.dnsZone().ifPresent(dnsZone -> root.setString(dnsZoneField, dnsZone.id())); Cursor portArray = root.setArray(portsField); loadBalancer.ports().forEach(portArray::addLong); Cursor networkArray = root.setArray(networksField); loadBalancer.networks().forEach(networkArray::addString); Cursor realArray = root.setArray(realsField); loadBalancer.reals().forEach(real -> { Cursor realObject = realArray.addObject(); realObject.setString(hostnameField, real.hostname().value()); realObject.setString(ipAddressField, real.ipAddress()); realObject.setLong(portField, real.port()); }); Cursor rotationArray = root.setArray(rotationsField); loadBalancer.rotations().forEach(rotation -> { Cursor rotationObject = rotationArray.addObject(); rotationObject.setString(nameField, rotation.value()); }); root.setBool(inactiveField, loadBalancer.inactive()); try { return SlimeUtils.toJsonBytes(slime); } catch (IOException e) { throw new UncheckedIOException(e); } }