陪伴而非守候
正如评论者所指出的,您的示例字符串不是有效的 JSON,因为用大括号分隔的 JSON 文档必须是具有键值对列表的对象(例如{"x":1},数字是普通的(例如2))。但是,这个简单的“大括号括起”符号integer” 可以通过多种方式轻松解析,最终通过检查OPEN_BRACE, DIGIT+, CLOSE_BRACE.下面的示例代码检查给定字符串的第一个符文是左大括号{,最后一个是右大括号},中间的所有内容都可以使用以下方法解析为整数strconv.ParseInt(...):func main() { ss := []string{"{1}", "{2}", "{-123}", "{foo}", "{10", "20}", "30"} for _, s := range ss { x, err := parseBraceNumber(s) fmt.Printf("s=%-10qx=%-10derr=%v\n", s, x, err) } // s="{1}" x=1 err=<nil> // s="{2}" x=2 err=<nil> // s="{-123}" x=-123 err=<nil> // s="{foo}" x=0 err=invalid brace number "{foo}" // s="{10" x=0 err=invalid brace number "{10" // s="20}" x=0 err=invalid brace number "20}" // s="30" x=0 err=invalid brace number "30"}func parseBraceNumber(s string) (int64, error) { if len(s) < 3 || s[0] != '{' || s[len(s)-1] != '}' { return 0, fmt.Errorf("invalid brace number %q", s) } x, err := strconv.ParseInt(s[1:len(s)-1], 10, 64) if err != nil { return 0, fmt.Errorf("invalid brace number %q", s) } return x, nil}当然,其他策略也是可能的(例如使用正则表达式),最终由您决定哪种实现最适合您的用例。