代码之家  ›  专栏  ›  技术社区  ›  Justin Thomas

协议取消标记键:[“abc”,“123”],[“123”]

  •  0
  • Justin Thomas  · 技术社区  · 8 年前

    // Tried repeated string ... ListOfString.... repeated list of string
    message Link {
            string id     = 1;
            string names = 2;    
    }
    
    jsonstr := `
    {
       "names": [ ["Bill", "Susan"], ["Jim", "James"] ]
    }`
    
    // go code
    jsonpb.Unmarshal(jsonstr, &pb.Link)
    

    使用jsonpb取消标记: https://godoc.org/github.com/golang/protobuf/jsonpb

    1 回复  |  直到 8 年前
        1
  •  2
  •   Dietrich Epp    8 年前

    您所能做的最好的就是更改模式:

    message Name {
        repeated string name = 1;
    }
    
    message Link {
        string id = 1;
        repeated string names = 2;
    }
    

    const jsonStr = `
    {
      "names": [
        { "name": ["Bill", "Susan"] },
        { "name": ["Jim", "James"] }
      ]
    }
    `
    
    func main() {
        var link pb.Link
        if err := jsonpb.UnmarshalString(jsonStr, &link); err != nil {
            fmt.Println("Error:", err)
        }
    }