将JSON内容存储为字符串的数据类型应该是正确的?

时间:2012-08-17 20:33:54

标签: sql-server json sql-server-2008 sql-server-2005 json.net

我计划使用JSON.NET对对象进行序列化和反序列化,并将json字符串存储在数据库中。

SQL Server 2008的哪种数据类型应该最好存储它?

  • 为nvarchar(最大)?
  • VARCHAR(最大)?

3 个答案:

答案 0 :(得分:3)

你的json会多语言吗?如果是 - 请使用nvarchar。如果不是 - 使用varchar,它会占用更少的存储空间,并且在性能方面更有效。

答案 1 :(得分:2)

您应该使用nvarchar(max)。

http://www.ietf.org/rfc/rfc4627.txt

JSON的首选编码是UTF-8,但也可以使用UTF-16和UTF-32,因此您可能会获得包含宽字符的数据。

另一方面,您也可以使用varbinary(max),存储实际的UTF-8流并节省一些空间和处理,因为UTF-8流不需要转换为.NET中的实际字符串(即没有UTF-8到Unicode内部.NET字符串)。

我不会使用varchar(max),因为如果你确实有广泛的字符,那么它们可能会被任何未转换UTF-8的查询错误解释,而UTF-8恰好存储在varchar中(假设8位varchar)因为您还可以根据数据库设置在varchar中存储多字节,并且您不必担心将UTF-8转换为varchar的特定代码页。同样,nvarchar是Unicode,因此您不必担心任何混乱。

您打算对SQL Server中的JSON或仅存储进行任何操作吗?

答案 2 :(得分:0)

varchar 10倍。更快更好。