private static void writeArray(JsonWriter writer, Descriptors.FieldDescriptor fieldDescriptor, Collection array) { writer.beginArray(); for (Object o : array) { writeFieldValue(fieldDescriptor, o, writer); } writer.endArray(); }
private static void writeMap(Collection<MapEntry> mapEntries, JsonWriter writer) { writer.beginObject(); for (MapEntry mapEntry : mapEntries) { // Key fields are always double-quoted in json writer.name(mapEntry.getKey().toString()); Descriptors.FieldDescriptor valueDescriptor = mapEntry.getDescriptorForType().findFieldByName("value"); writeFieldValue(valueDescriptor, mapEntry.getValue(), writer); } writer.endObject(); }
private static void writeMessage(Message message, JsonWriter writer) { MessageType type = MessageType.of(message); for (Descriptors.FieldDescriptor fieldDescriptor : type.fieldDescriptors) { if (fieldDescriptor.isRepeated()) { writer.name(fieldDescriptor.getName()); if (fieldDescriptor.isMapField()) { writeMap((Collection<MapEntry>) message.getField(fieldDescriptor), writer); } else { writeArray(writer, fieldDescriptor, (Collection) message.getField(fieldDescriptor)); } } else if (message.hasField(fieldDescriptor)) { writer.name(fieldDescriptor.getName()); Object fieldValue = message.getField(fieldDescriptor); writeFieldValue(fieldDescriptor, fieldValue, writer); } } }
private static void writeArray(JsonWriter writer, Descriptors.FieldDescriptor fieldDescriptor, Collection array) { writer.beginArray(); for (Object o : array) { writeFieldValue(fieldDescriptor, o, writer); } writer.endArray(); }
private static void writeMap(Collection<MapEntry> mapEntries, JsonWriter writer) { writer.beginObject(); for (MapEntry mapEntry : mapEntries) { // Key fields are always double-quoted in json writer.name(mapEntry.getKey().toString()); Descriptors.FieldDescriptor valueDescriptor = mapEntry.getDescriptorForType().findFieldByName("value"); writeFieldValue(valueDescriptor, mapEntry.getValue(), writer); } writer.endObject(); }
private static void writeMessage(Message message, JsonWriter writer) { MessageType type = MessageType.of(message); for (Descriptors.FieldDescriptor fieldDescriptor : type.fieldDescriptors) { if (fieldDescriptor.isRepeated()) { writer.name(fieldDescriptor.getName()); if (fieldDescriptor.isMapField()) { writeMap((Collection<MapEntry>) message.getField(fieldDescriptor), writer); } else { writeArray(writer, fieldDescriptor, (Collection) message.getField(fieldDescriptor)); } } else if (message.hasField(fieldDescriptor)) { writer.name(fieldDescriptor.getName()); Object fieldValue = message.getField(fieldDescriptor); writeFieldValue(fieldDescriptor, fieldValue, writer); } } }