如何在字节数组

时间:2018-04-22 19:44:04

标签: arrays string parsing serialization

我习惯使用JSON来存储字符串值,一切正常。现在我遇到了无法使用JSON并且需要将一组字符串存储在数组缓冲区中的情况。想知道划分字符串以处理边缘情况的做法是什么,例如:

  • 如果分隔符是双引号"string...",如果字符串"str"ing..."中有引号怎么办。
  • 如果分隔符是随机字符序列,例如--MYDELIMITER--,则有可能导致错误匹配(即某些字符串实际上包含该序列)。

我想的数组看起来像JSON:

["123", "foo\"", "bar", "ba\"\"z"]

所以我很困惑如何在没有JSON的情况下做到这一点:

"123""foo\"""bar""ba\"\"z"

实际上,我想要做的是在字节数组中分离任意值,例如布尔值,JSON日期,字符串和数字。

1 个答案:

答案 0 :(得分:1)

你可以JSON.stringify()一个字符串数组并将其写入缓冲区吗?如果您不需要将数据作为接收端的流消费,而不是Json.parse,则这可能是一个很好的解决方案。

可以说任何UNICODE字符都可以以十六进制表示法的形式存在于数据中。您可以创建(实际上)唯一分隔符,但这会使您的数据更大。

在任何情况下都可以使用的一个解决方案是创建一个Uint16Array,它在索引0处存储第一个字符串的长度,然后在每个位置存储包含string.charCodeAt(position)的[length]项,然后是长度第二个字符串和后续[length]项目上的所有charcodes等。基本上是Pascal string实现。