code: func makeJSONFromProtoStruct(blob []byte) string {
  	if len(blob) == 0 {
  		return ""
  	}
  
  	// Binary proto => internal representation.
  	obj := structpb.Struct{}
  	if err := proto.Unmarshal(blob, &obj); err != nil {
  		return fmt.Sprintf("<not a valid protobuf.Struct - %s>", err)
  	}
  
  	// Internal representation => JSON. But JSONPB produces very ugly JSON when
  	// using Ident. So we are not done yet...
  	ugly, err := (&jsonpb.Marshaler{}).MarshalToString(&obj)
  	if err != nil {
  		return fmt.Sprintf("<failed to marshal to JSON - %s>", err)
  	}
  
  	// JSON => internal representation 2, sigh. Because there's no existing
  	// structpb.Struct => map converter and writing one just for the sake of
  	// JSON pretty printing is kind of annoying.
  	var obj2 map[string]interface{}
  	if err := json.Unmarshal([]byte(ugly), &obj2); err != nil {
  		return fmt.Sprintf("<internal error when unmarshaling JSON - %s>", err)
  	}
  
  	// Internal representation 2 => pretty (well, prettier) JSON.
  	pretty, err := json.MarshalIndent(obj2, "", "  ")
  	if err != nil {
  		return fmt.Sprintf("<internal error when marshaling JSON - %s>", err)
  	}
  	return string(pretty)
  }
docs: // makeJSONFromProtoStruct reformats serialized protobuf.Struct as JSON.
  //
  // If the blob is empty, returns empty string. If the blob is not valid proto
  // message, returns a string with error message instead. This is exclusively for
  // UI after all.