Sql server 将JSON字符串保存到SQL Server数据库时出现问题

Sql server 将JSON字符串保存到SQL Server数据库时出现问题,sql-server,json,angularjs,Sql Server,Json,Angularjs,我的Angular web应用程序当前使用HTML5localStorage对象将JSON对象序列化/反序列化到本地存储中,或从本地存储中序列化JSON对象。我们现在正试图在SQL Server表中保存和检索这些相同的JSON对象 然而,当我尝试使用以下SQLUPDATE保存JSON字符串时,我遇到了困难: UPDATE [rz37883_SQLServer].[dbo].[RAGEDashboard] SET image = '{"widgets":[{"title":"Bar Char

我的Angular web应用程序当前使用HTML5
localStorage
对象将JSON对象序列化/反序列化到本地存储中,或从本地存储中序列化JSON对象。我们现在正试图在SQL Server表中保存和检索这些相同的JSON对象

然而,当我尝试使用以下SQL
UPDATE
保存JSON字符串时,我遇到了困难:

UPDATE [rz37883_SQLServer].[dbo].[RAGEDashboard]
SET 
  image = '{"widgets":[{"title":"Bar Chart","name":"chart_bar","style":{},"size":{"width":"50%","height":320},"dataModelOptions":{"title":{"text":"Bar Chart","position":"bottom"},"legend":{"visible":true,"position":"top"},"seriesDefaults":{"type":"bar","stack":false},"series":[{"field":"field1","name":"MTM"}],"dataSource":{"data":[{"field1":236151654.592439},{"field1":103612357.347808},{"field1":267066579.129913},{"field1":582355005.154486},{"field1":-9422699.958631}],"table":null},"valueAxis":{"labels":{"format":"{0:c}","rotation":-30},"line":{"visible":false},"axisCrossingValue":0},"categoryAxis":{"categories":["London","New York","Dubai","Paris","Stockholm"],"majorGridLines":{"visible":false},"labels":{"rotation":0,"margin":20}},"tooltip":{"visible":true,"template":"#= series.name #: #= kendo.format('{0:C0}', value) #"},"dimensions":[{"dimension":"BookingLocation","hierarchy":false,"id":0}],"riskMeasures":[{"name":"MTM","kri_group":"[MTM:MTM]","cube_vector":"MTM:MTM","aggreg_formula":"SUM(MTM:MTM)","id":0}]},"initImage":"images2/bar_chart.png","gadgetConfigured":true}]}'
 WHERE [RAGEDashboardConfig_userid] = 'bobmazzo1234' 
   AND id = 1441288790
SQL Server错误消息为:

味精102,第15级,状态1,第3行
“{”附近的语法不正确

在角度指令代码中,
对象当前保存到
localStorage
,如下所示

 save: function (widgets) {
   //'widgets' are mapped to the 'serialized' var using _.map()
   item = JSON.stringify(item);
   this.storage.setItem(this.id, item);
 }
我现在正在连接一个http请求,它将使用MS WebAPI调用到一个c#API层


这里的问题是,我只是尝试手动更新SQL Server表,以便测试检索功能。

我认为这是因为字符串中有两个单引号。必须对它们进行转义,讽刺的是,单引号是转义字符

以下是我所做的轻微修改:

原始:
kendo.format({0:C0}',value)

修改:
kendo.format('{0:C0}',value)

尝试将字符串更改为此,然后查看是否解决了此问题:

UPDATE [rz37883_SQLServer].[dbo].[RAGEDashboard]
   SET 
      image = 
'{"widgets":[{"title":"Bar Chart","name":"chart_bar","style":{},"size":{"width":"50%","height":320},"dataModelOptions":{"title":{"text":"Bar Chart","position":"bottom"},"legend":{"visible":true,"position":"top"},"seriesDefaults":{"type":"bar","stack":false},"series":[{"field":"field1","name":"MTM"}],"dataSource":{"data":[{"field1":236151654.592439},{"field1":103612357.347808},{"field1":267066579.129913},{"field1":582355005.154486},{"field1":-9422699.958631}],"table":null},"valueAxis":{"labels":{"format":"{0:c}","rotation":-30},"line":{"visible":false},"axisCrossingValue":0},"categoryAxis":{"categories":["London","New York","Dubai","Paris","Stockholm"],"majorGridLines":{"visible":false},"labels":{"rotation":0,"margin":20}},"tooltip":{"visible":true,"template":"#= series.name #: #= kendo.format(''{0:C0}'', value) #"},"dimensions":[{"dimension":"BookingLocation","hierarchy":false,"id":0}],"riskMeasures":[{"name":"MTM","kri_group":"[MTM:MTM]","cube_vector":"MTM:MTM","aggreg_formula":"SUM(MTM:MTM)","id":0}]},"initImage":"images2/bar_chart.png","gadgetConfigured":true}]}'
WHERE [RAGEDashboardConfig_userid]='bobmazzo1234' and id = 1441288790

例如,JavaScript str.replace()函数?或str.replace(/'/g,“\\'”);我认为这是可行的!只要不让它修改前导和尾随单引号就行。