Java 类com.google.protobuf.MapEntry 实例源码

项目:runrightfast-vertx    文件:ProtobufUtils.java   
private static void addMapField(final JsonObjectBuilder json, final Message msg, final Descriptors.FieldDescriptor field) {
    final JsonObjectBuilder map = Json.createObjectBuilder();
    final List<MapEntry<String, Object>> mapEntries = (List<MapEntry<String, Object>>) msg.getField(field);
    mapEntries.forEach(entry -> {
        final Object value = entry.getValue();
        if (value instanceof Message) {
            map.add(entry.getKey(), protobuMessageToJson((Message) value));
        } else if (value instanceof String) {
            map.add(entry.getKey(), (String) value);
        } else if (value instanceof Integer) {
            map.add(entry.getKey(), (Integer) value);
        } else if (value instanceof Long) {
            map.add(entry.getKey(), (Long) value);
        } else if (value instanceof Double) {
            map.add(entry.getKey(), (Double) value);
        } else if (value instanceof Float) {
            map.add(entry.getKey(), (Float) value);
        } else if (value instanceof Boolean) {
            map.add(entry.getKey(), (Boolean) value);
        } else if (value instanceof ByteString) {
            map.add(entry.getKey(), Base64.getEncoder().encodeToString(((ByteString) value).toByteArray()));
        }
    });
    json.add(field.getName(), map);
}