无法将document[0](类型为uint8)作为函数参数中的[]byte类型使用

huangapple go评论81阅读模式
英文:

cannot use document[0] (type uint8) as type []byte in function argument

问题

我正在尝试从文档中获取一个JSON字符串,并将其传递给GO语言中的SimpleJson,但是我遇到了类型的问题(再次..)

我得到了以下错误:

> 无法将document[0](类型为uint8)作为函数参数中的[]byte类型使用

而引发错误的代码行是:

js, err := simplejson.NewJson(document[0])

请问有人可以帮我修复这个问题吗?还有一个好的地方可以了解类型和转换吗?我之前使用的是没有类型的php和转换简单的python,GO在这方面有点令人困惑。

谢谢 无法将document[0](类型为uint8)作为函数参数中的[]byte类型使用

英文:

I'm trying to get a JSON string pulled from a document and into SimpleJson in GOlang, though I've run into a problem with the types (again..)

I get the following error:

> cannot use document[0] (type uint8) as type []byte in function argument

and the line which bugs up is:

js, err := simplejson.NewJson(document[0])

Could anyone please help me fix this, and also is there a good place I can read up about types and conversions? Having come from php which has no types and python where the conversions are simple, GO is a bit confusing on this front.

Thanks 无法将document[0](类型为uint8)作为函数参数中的[]byte类型使用

答案1

得分: 6

首先,uint8只是byte的别名。因此,[]uint8[]byte是相同的。

错误信息告诉你的是document[0]的类型是uint8而不是[]byte

从你的评论中可以看出,document是一个字符串。你只需要将它转换为[]byte。如果JSON数据本身包含一个数组,你必须首先解析文档(将其传递给NewJson),然后才能检索JSON数组的第一个值。

所以,改变你的代码为:

js, err := simplejson.NewJson([]byte(document))
// 错误检测
jsonArray, err := js.Array()
// 更多错误检测
fmt.Println(jsonArray[0])

(我假设你已经导入了github.com/xiocode/toolkit/simplejson包。这是我找到的唯一一个带有simplejson.NewJson的包)

英文:

First of all, uint8 is simply an alias for byte. Therefor []uint8 is the same as []byte.

What the error message tells you is that document[0] is of type uint8 and not []byte

From your comment it is clear that document is a string. You should just convert it to []byte. If the JSON data in itself contains an array, you must first parse the document (pass it to NewJson) before you can retrieve the first value of the JSON array.

So, instead change your code to:

js, err := simplejson.NewJson([]byte(document))
// error testing
jsonArray, err := js.Array()
// more error testing
fmt.Println(jsonArray[0])

(I assume you have imported the github.com/xiocode/toolkit/simplejson package. The only one I could find with simplejson.NewJson)

huangapple
  • 本文由 发表于 2013年7月4日 18:03:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/17467460.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定