2016-09-06 5 views
0

文字列内の任意の文字/特殊文字をエスケープできるSQL ServerまたはVisual Studioにway/function/reg-exがありますか?SQL Serverでjson形式の文字列を解析する方法

私はサーバーのテキストフィールドがあり、そこに任意の種類の文字列(特殊文字を含む)を入力できる機能/ページがあります。その結果、私はJSON文字列をそれらのテキストフィールドエントリの 'Key'、 'Value'として表示しています。 EXのために

:私は、ページ上でこれらのフィールドを持っている:

Name , LastName , Address 

そして、上記のフィールドに入力された値は、次のとおりです。

Name : *-+-#. Wwweee4426554456666yyyy5uuuuttrrrreree6655zfgh\\][;'/.uuuuuuuu66uuyt,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\\\"?><\\\\][;'/.,+_)(*&^%$#@!~|}{:\ 

LastName : Piterson 
Address : Park Road, LA 

そして、私はJSON文字列のような出力を示していますbelow-

[{"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

どのバージョンのSQL-Serverですか? – Shnugo

+0

与えられた例はあまり300文字以下です。あなたのエラーメッセージは* 1246 *の位置を示しています。あなたが提供する関数は、指定された文字列でうまくいくようです...他のどこかで問題が発生する可能性があります... – Shnugo

+0

@Shnugo、SQL Server 2012 – GreenSoft

答えて

0

here
var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test( text.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + text + ')');

+0

C#またはSQL Serverのいずれかのソリューションが必要です。 – GreenSoft

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

0

使用してJSONに入力文字列を変換してみてください:

A)

string jsonEncoded = HttpUtility.JavaScriptStringEncode(s) 

又は

B)NuGetパッケージNewtonsoftをSystem.Web.HttpUtility.JavaScriptStringEncode。 Json

string jsonEncoded = JsonConvert.ToString(s) 

参照:How to escape JSON string?

関連する問題