我习惯使用JSON来存储字符串值,一切正常。现在我遇到了无法使用JSON并且需要将一组字符串存储在数组缓冲区中的情况。想知道划分字符串以处理边缘情况的做法是什么,例如:
"string..."
,如果字符串"str"ing..."
中有引号怎么办。--MYDELIMITER--
,则有可能导致错误匹配(即某些字符串实际上包含该序列)。我想的数组看起来像JSON:
["123", "foo\"", "bar", "ba\"\"z"]
所以我很困惑如何在没有JSON的情况下做到这一点:
"123""foo\"""bar""ba\"\"z"
实际上,我想要做的是在字节数组中分离任意值,例如布尔值,JSON日期,字符串和数字。
答案 0 :(得分:1)
你可以JSON.stringify()一个字符串数组并将其写入缓冲区吗?如果您不需要将数据作为接收端的流消费,而不是Json.parse,则这可能是一个很好的解决方案。
可以说任何UNICODE字符都可以以十六进制表示法的形式存在于数据中。您可以创建(实际上)唯一分隔符,但这会使您的数据更大。
在任何情况下都可以使用的一个解决方案是创建一个Uint16Array,它在索引0处存储第一个字符串的长度,然后在每个位置存储包含string.charCodeAt(position)的[length]项,然后是长度第二个字符串和后续[length]项目上的所有charcodes等。基本上是Pascal string实现。