在SQL Server或Visual Studio中是否有一个方法/函数/ reg-ex,通过它我们可以转义字符串中的任何字符/特殊字符?
我有一个功能/页面,其中有服务器文本字段,用户可以在那里输入任何类型的字符串(包括特殊字符)。因此,我将JSON字符串显示为' Key',' Value'削减那些文本字段条目。
例如:我在页面上有这些字段:
Name , LastName , Address
以上字段的输入值为:
Name : *-+-#. Wwweee4426554456666yyyy5uuuuttrrrreree6655zfgh\\][;'/.uuuuuuuu66uuyt,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\
LastName : Piterson
Address : Park Road, LA
我正在显示输出,如下面的JSON字符串 -
[{"Key":"Name","Value":"*-+-#.Wwweee4426554456666yyyy5uuuuttrrrreree6655zfgh\\][;'/.uuuuuuuu66uuyt,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\"},{"Key":"LastName","Value":"Piterson"},{"Key":"Address","Value":"Park Road, LA"}]
但是在解析这个字符串时,我得到一个解析错误 -
"After parsing a value an unexpected character was encountered: K. Path '[4].Value', line 1, position 1246."
我正在使用SQL Server下面的函数来解析字符串 -
ALTER function [dbo].[fnEscapeString](@text nVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
as
BEGIN
--if(CHARINDEX() )
if (CHARINDEX('\',@text) > 0)
set @text = Replace(@text,'\','\\')
if (CHARINDEX('"',@text) > 0)
set @text = Replace(@text,'"','\"')
return @text
END
此功能适用于许多其他情况(包含许多其他字符串)。但不使用上面的字符串。我认为这个函数不足以解析所有类型的字符串。
那么我们可以用任何方式解析有效JSON行格式的字符串。可能是任何reg-ex或sql函数都可以做到这一点。请建议。
答案 0 :(得分:1)
您可以在2016年直接将表格数据转换为json,
SELECT name, surname
FROM emp
FOR JSON AUTO
但是如果版本较低,则必须将sql表数据转换为xml,然后再转换为Json。
请参阅此链接以将SQL数据解析为Json。
http://www.codeproject.com/Articles/815371/Data-Parsing-SQL-to-JSON
答案 1 :(得分:0)
您可以按照here所述尝试这一点
var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
eval('(' + text + ')');
答案 2 :(得分:0)
尝试使用以下命令将输入字符串转换为JSON:
a)System.Web.HttpUtility.JavaScriptStringEncode
string jsonEncoded = HttpUtility.JavaScriptStringEncode(s)
或
b)NuGet包Newtonsoft.Json
string jsonEncoded = JsonConvert.ToString(s)