doujuchuan9915 2017-09-05 04:42
浏览 21

协议缓冲区格式的匿名结构

Given a Go struct like this:

type House struct {
    Address string
    Rooms []struct {
        Name string
        Windows int
        Doors int
    }
}

Or an equivalent JSON representation:

{
    "address": ""
    "rooms": [
        {
            "name": ""
            "windows": 0
            "doors": 0
        }
    ]
}

What would the equivalent Protocol Buffer representation be?

This is more or less what I would like to do (althought not a valid Proto syntax):

message House {
    string address = 1;
    repeated message {
        string name = 3;
        int32 windows = 4;
        int32 doors = 5;
    } rooms = 2;
}

Instead, doing it like this is valid, but doesn't represent the data accurately since the original rooms slice contains anonymous objects:

message House {
    string address = 1;
    repeated room rooms = 2;
}

message room {
    string name = 1;
    int32 windows = 2;
    int32 doors = 3;
}

Update: I think I misunderstood how the message declaration works. The second example I gave should be sufficient and actually does not interfere with JSON unmarshalling.

  • 写回答

1条回答 默认 最新

  • dsf12123 2017-09-05 06:59
    关注

    In order to achieve what you want and get rid of anonymous structs, I think you should declare room message within House and then assign it as repeated, something like this:

    message House {
      message room {
        string name = 1;
        int32 windows = 2;
        int32 doors = 3;        
      }
      string address = 1;
      repeated room rooms = 2;
    }
    

    It will correspond to the following structs in go:

    type House struct {
        name         string                     
        rooms       []*room
    }
    
    type room struct {
        name string
        windows int32
        doors int32
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题