首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法将字符串解析为datastore.Key

无法将字符串解析为datastore.Key
EN

Stack Overflow用户
提问于 2019-06-24 07:11:00
回答 1查看 11.3K关注 0票数 0

关于this question,我尝试将表单中的数据存储键值转换为int64,并在该键值的帮助下更新数据存储区中的记录。我尝试了与参考链接中选择的答案完全相同的代码,但得到了一个错误,显示为Unable to parse key. strconv.ParseInt: parsing "/Users,6248007768440574": invalid syntax

我从表单传递的值是一个/Users,6248007768440574格式的数据存储键。我意识到语法错误就是因为这个原因。有人能帮我解决这个问题吗?或者,是否有将字符串转换为*datastore.Key的方法?任何帮助我们都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-24 08:55:21

因为字符串"/Users,6248007768440574"不是整数,所以ParseInt会返回错误。子字符串是一个整数,但不是整个字符串。

问题中的字符串是通过调用Key.String创建的。数据存储包不提供解析此方法的输出的方法。下面是一个简单的解析器,用于处理没有祖先键的情况:

代码语言:javascript
复制
var keyPat = regexp.MustCompile(`^/([^\.]*),(\d+)$`)

func parseKey(s string) (*datastore.Key, error) {
    m := keyPat.FindStringSubmatch(s)
    i := strings.Index(s, ",")
    if i < 0 {
        return nil, errors.New("bad format")
    }
    n, err := strconv.ParseInt(m[2], 10, 64)
    if err != nil {
        return nil, err
    }
    return datastore.IDKey(m[1], n, nil), nil
}

Encode方法和Decode函数是将键与机器可读字符串相互转换的首选方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56728338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档