如何将utf8字符串转换为[] byte?

Midiparse:

我想解组string包含JSON的a,但是该Unmarshal函数将a []byte作为输入。

如何将UTF8转换string[]byte

icza:

这个问题可能是如何将字符串分配给bytes数组的重复,但仍存在答案,因为有更好的替代解决方案:

从转换string[]byte由该规范允许的,使用一个简单的转换

字符串类型之间的转换

[...]

  1. 将字符串类型的值转换为字节类型的切片会产生一个切片,其连续元素是字符串的字节。

因此,您可以简单地执行以下操作:

s := "some text"
b := []byte(s) // b is of type []byte

但是,该string => []byte转换会复制字符串内容(它必须复制,因为strings是不可变的,而[]byte值则不是不变的),如果strings 大,则转换效率不高。相反,您可以创建一个io.Reader使用方法strings.NewReader(),该方法将从传递的内容中读取内容,而string无需对其进行复制。您可以使用以下方法将其传递io.Readerjson.NewDecoder()并解组Decoder.Decode()

s := `{"somekey":"somevalue"}`

var result interface{}
err := json.NewDecoder(strings.NewReader(s)).Decode(&result)
fmt.Println(result, err)

输出(在Go Playground上尝试):

map[somekey:somevalue] <nil>

注意:调用strings.NewReader()json.NewDecoder()确实会有一些开销,因此,如果您使用的是小型JSON文本,则可以安全地将其转换为[]byte和使用json.Unmarshal(),它不会变慢:

s := `{"somekey":"somevalue"}`

var result interface{}
err := json.Unmarshal([]byte(s), &result)
fmt.Println(result, err)

输出是相同的。Go Playground上尝试一下

注意:如果要string通过读取一些内容io.Reader(例如文件或网络连接)来获取JSON输入,则可以将其直接传递io.Readerjson.NewDecoder(),而不必先从中读取内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将byte []转换为UTF8的字符串

从ReadOnlySequence <byte>解析UTF8字符串

Java:将byte []转换为base36字符串

将byte []转换为Base64字符串以获取数据URI

UTF-8无法将byte []转换为字符串

如何将UTF8字符串转换为字节数组?

在UTF-8字符上使用“ string.byte”将返回一个数组,我如何将该数组转换回UTF-8字符?

如何将2D字符串切片转换为[] byte?

在Java中,如何将十六进制字符串转换为byte []?

如何将java byte []转换为python字符串?

如何将 [][]byte 转换为 []byte?

使用缓冲区将byte []转换为Base64字符串(以避免OOM)

Golang将UTF16字符串转换为UTF8

如何将subprocess.communicate()转换为utf-8字符串?

POJO具有byte []字段,但与之对应的JSON具有字符串字段。如何将字符串转换为byte []?

将流缓冲区转换为utf8字符串

Python 2.7,将utf8字符串转换为ascii

使用UTF-16LE编码将字符串快速转换为byte []

如何将utf8字节数组转换为给定长度的字符串

如何将小数转换为任何UTF8字符?

在控制器内部构建模型时,如何将Byte []隐式转换为字符串

如何将[] byte转换为[8] uint8

如何将xml字符串UTF8转换为UTF16?

经典ASP-如何将UTF-8字符串转换为UTF-16?

Websocket将byte []转换为字符串

将List <Byte>转换为字符串

将位字符串转换为byte [] c#

将 BinarySerialized Byte Array 转换为可读字符串

将字符串从Byte数组转换为int