title: ajax jquery - Invalid JSON format
body: <p>I am trying to send a json object to a webservice. I am getting below error in the firebug.</p>
  
  <pre><code>{"Message":"Invalid object passed in, \u0027:\u0027 or \u0027}\u0027 expected. (3423): {\u0027GUID\u0027:\u0027urhhh1bqbezjvb45dnqlgj45\u0027,\u0027RuleName\u0027:\u0027Summary Check\u0027,\u0027LinkArray\u0027:\u0027[{\"from\":\"Start\",\"to\":\"Count\",\"text\":\"Next\",\"fromPort\":\"5\",\"toPort\":\"1\"},{\"from\":\"Count.6\",\"to\":\"Multiple Decisions\",\"text\":\"Next\",\"fromPort\":\"5\",\"toPort\":\"1\"},{\"from\":\"Multiple Decisions\",\"to\":\"Status\",\"text\":\"True\",\"fromPort\":\"3\",\"toPort\":\"7\"},{\"from\":\"Multiple Decisions\",\"to\":\"Finish\",\"text\":\"False\",\"fromPort\":\"5\",\"toPort\":\"1\"},{\"from\":\"Status\",\"to\":\"Finish.14\",\"text\":\"Next\",\"fromPort\":\"3\",\"toPort\":\"7\"},{\"from\":\"Count\",\"to\":\"Count.6\",\"text\":\"Next\",\"fromPort\":\"5\",\"toPort\":\"1\"}]\u0027,\u0027NArray\u0027:\u0027[{\"key\":\"StatusText\",\"category\":\"Comment\",\"location\":\"10 10\",\"text\":\"Step 10\\rEvent = PAEditQuote\\rModel = PAStatementValidation\",\"figure\":\"RoundedRectangle\"},{\"key\":\"Start\",\"category\":\"begin\",\"type\":\"Start\",\"location\":\"169 124\",\"size\":\"57 55\",\"text\":\"\",\"tooltip\":\"Datasource=\",\"break\":\"false\",\"Properties\":{\"Name\":\"Start\"}},{\"key\":\"Count.6\",\"category\":\"image\",\"type\":\"Count\",\"location\":\"172 378\",\"size\":\"49 49\",\"text\":\"# of Sele QA’s\",\"tooltip\":\"Number of Sele Question Answers=Statement Sele QA Where Statement Sele Answer Required equals Y\",\"break\":\"false\",\"Properties\":{\"Variable\":\"[:000013]\",\"Name\":\"Count\",\"Message\":\"Count\",\"ShortName\":\"Statement Sele QA\",\"Operand1\":\"equals\",\"Value1\":\"Y\",\"CountType1\":\"All\",\"DecShortName\":\"Statement Sele Answer Required\",\"DataBase\":\"DB1\",\"Table\":\"SHSeleQuestions\",\"XMLPath\":\"DB1\\\\SHSeleQuestions\",\"DecXMLPath\":\"DB1\\\\SHSeleQuestions\\\\ResponseReqInd\"}},{\"key\":\"Multiple Decisions\",\"category\":\"Decision\",\"type\":\"DecPlus\",\"location\":\"169 508\",\"size\":\"75 56\",\"text\":\"If no required answers given\",\"tooltip\":\"Number of Sele Question Answers is greater than 0\",\"break\":\"false\",\"Properties\":{\"DecisionInd\":\"True\",\"Variable1\":\"[:000013]\",\"Operand1_1\":\"is greater than\",\"Value1_1\":\"0\",\"Name\":\"DecPlus\",\"Variable2\":\"[:000015]\",\"Operand1_2\":\"equals\",\"Value1_2\":\"0\"}},{\"key\":\"Finish\",\"category\":\"end\",\"type\":\"Finish\",\"location\":\"172 625\",\"size\":\"57 55\",\"text\":\"\",\"tooltip\":\"\",\"break\":\"false\",\"Properties\":{\"Name\":\"Finish\"}},{\"key\":\"Status\",\"category\":\"image\",\"type\":\"Status\",\"location\":\"313 508\",\"size\":\"53 49\",\"text\":\"HOST003\",\"tooltip\":\"Warning=HOST003 - All Questions must be answered on the Statement Page.\",\"break\":\"false\",\"Properties\":{\"Name\":\"Status\",\"Message\":\"Validation.IValidation\",\"StatusCode\":\"PADriver002\",\"StatusType\":\"Error\",\"StatusMessage\":\"All Questions must be answered on the Statement Page.\",\"StatusPage\":\"PAStatement.aspx\",\"Unique\":\"False\"},\"Unique\":\"False\"},{\"key\":\"Finish.14\",\"category\":\"end\",\"type\":\"Finish\",\"location\":\"461 508\",\"size\":\"57 55\",\"text\":\"Stop Model\",\"tooltip\":\"\",\"break\":\"false\",\"Properties\":{\"Name\":\"Finish\",\"Termination\":\"StopModel\"}},{\"key\":\"Count\",\"category\":\"image\",\"type\":\"MultiCount\",\"location\":\"172 252\",\"size\":\"49 49\",\"selected\":\"true\",\"text\":\"Statement Answer\",\"tooltip\":\"=\",\"break\":\"false\",\"Properties\":{\"Variable\":\"[:000015]\",\"Name\":\"MultiCount\",\"Message\":\"MultiCount\",\"ShortName\":\"Statement Answer\",\"CountType1\":\"All\",\"ShortName1\":\"Statement Answer\",\"Operand1_1\":\"does not equal\",\"Item\":\"1\",\"XMLDoc\":\"PagePolicyData\",\"XMLPath\":\"PagePolicyData\\\\ValidationMessage\\\\PageContent\\\\ACORD\\\\PersAutoLineBusiness\\\\QuestionAnswer\\\\YesNoCd\",\"XMLPath1\":\"PagePolicyData\\\\ValidationMessage\\\\PageContent\\\\ACORD\\\\PersAutoLineBusiness\\\\QuestionAnswer\\\\YesNoCd\",\"XMLCondPath\":\"Root\\\\PagePolicyData\\\\ValidationMessage\\\\PageContent\\\\ACORD\\\\PersAutoLineBusiness\\\\QuestionAnswer{((YesNoCd != \u0027\u0027))}\\\\YesNoCd\"}},{\"category\":\"Comment\",\"location\":\"450 50\",\"size\":\"150 38\",\"figure\":\"RoundedRectangle\",\"text\":\"Summary Check\"}]\u0027,\u0027RulesArray\u0027:\u0027{\"0\":\"Check Bypass\",\"1\":\"Bypass Edorsement\",\"2\":\"Statement Questions\"}\u0027}","StackTrace":"   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n   at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}
  </code></pre>
  
  <p>Jquery ajax call to webservice is below:</p>
  
  <pre><code>    var LinkArray = localStorage['LinkArray'];
      var NodeArray = localStorage['NArray'].replace("'", "\'");           
      var RulesArray=localStorage['TabList'];
      var Parameters = "{'GUID':'" + GetQueryStringValue('GUID') + "','RuleName':'" + $("#rulename").text() + "','LinkArray':'" + LinkArray + "','NArray':'" + NodeArray + "','RulesArray':'" + RulesArray + "'}";
      //var Parameters = '{"GUID":"' + GetQueryStringValue("GUID") + '","RuleName":"' + $('#rulename').text() + '","LinkArray":"' + LinkArray + '","NArray":"' + NodeArray + '","RulesArray":"' + RulesArray + '"}';
  
      $.ajax({
          type: "POST",
          url: "../RulesWebService.asmx/UpdateAllProperties",
          data: Parameters,            
          contentType: 'application/json; charset=utf-8',            
          crossBrowser: true,
          success: function (GetStatusRs) {
  
          },
          //onerror throw error.
          error: function (XMLHttpRequest, textStatus, errorThrown) {
              alert('Error Getting status for parameters: - Error:' + errorThrown);
          }
      });
  </code></pre>
  
  <p>My webmethod has below structure :</p>
  
  <pre><code>&lt;WebMethod(EnableSession:=True)&gt; _
    Public Function UpdateAllProperties(ByVal GUID As String, ByVal RuleName As String, ByVal LinkArray As String, ByVal NArray As String, ByVal RulesArray As String) As String
    'some stuff here.
  End Function
  </code></pre>
  
  <p>Below is the Parameters value which I am posting it to the server.</p>
  
  <pre><code>{'GUID':'urhhh1bqbezjvb45dnqlgj45','RuleName':'Summary Check','LinkArray':'[{"from":"Start","to":"Count","text":"Next","fromPort":"5","toPort":"1"},{"from":"Count.6","to":"Multiple Decisions","text":"Next","fromPort":"5","toPort":"1"},{"from":"Multiple Decisions","to":"Status","text":"True","fromPort":"3","toPort":"7"},{"from":"Multiple Decisions","to":"Finish","text":"False","fromPort":"5","toPort":"1"},{"from":"Status","to":"Finish.14","text":"Next","fromPort":"3","toPort":"7"},{"from":"Count","to":"Count.6","text":"Next","fromPort":"5","toPort":"1"}]','NArray':'[{"key":"StatusText","category":"Comment","location":"10 10","text":"Step 10\rEvent = PAEditQuote\rModel = PAStatementValidation","figure":"RoundedRectangle"},{"key":"Start","category":"begin","type":"Start","location":"169 124","size":"57 55","text":"","tooltip":"Datasource=","break":"false","Properties":{"Name":"Start"}},{"key":"Count.6","category":"image","type":"Count","location":"172 378","size":"49 49","text":"# of Sele QA’s","tooltip":"Number of Sele Question Answers=Statement Sele QA Where Statement Sele Answer Required equals Y","break":"false","Properties":{"Variable":"[:000013]","Name":"Count","Message":"Count","ShortName":"Statement Sele QA","Operand1":"equals","Value1":"Y","CountType1":"All","DecShortName":"Statement Sele Answer Required","DataBase":"DB1","Table":"SHSeleQuestions","XMLPath":"DB1\\SHSeleQuestions","DecXMLPath":"DB1\\SHSeleQuestions\\ResponseReqInd"}},{"key":"Multiple Decisions","category":"Decision","type":"DecPlus","location":"169 508","size":"75 56","text":"If no required answers given","tooltip":"Number of Sele Question Answers is greater than 0","break":"false","Properties":{"DecisionInd":"True","Variable1":"[:000013]","Operand1_1":"is greater than","Value1_1":"0","Name":"DecPlus","Variable2":"[:000015]","Operand1_2":"equals","Value1_2":"0"}},{"key":"Finish","category":"end","type":"Finish","location":"172 625","size":"57 55","text":"","tooltip":"","break":"false","Properties":{"Name":"Finish"}},{"key":"Status","category":"image","type":"Status","location":"313 508","size":"53 49","text":"HOST003","tooltip":"Warning=HOST003 - All Questions must be answered on the Statement Page.","break":"false","Properties":{"Name":"Status","Message":"Validation.IValidation","StatusCode":"PADriver002","StatusType":"Error","StatusMessage":"All Questions must be answered on the Statement Page.","StatusPage":"PAStatement.aspx","Unique":"False"},"Unique":"False"},{"key":"Finish.14","category":"end","type":"Finish","location":"461 508","size":"57 55","text":"Stop Model","tooltip":"","break":"false","Properties":{"Name":"Finish","Termination":"StopModel"}},{"key":"Count","category":"image","type":"MultiCount","location":"172 252","size":"49 49","selected":"true","text":"Statement Answer","tooltip":"=","break":"false","Properties":{"Variable":"[:000015]","Name":"MultiCount","Message":"MultiCount","ShortName":"Statement Answer","CountType1":"All","ShortName1":"Statement Answer","Operand1_1":"does not equal","Item":"1","XMLDoc":"PagePolicyData","XMLPath":"PagePolicyData\\ValidationMessage\\PageContent\\ACORD\\PersAutoLineBusiness\\QuestionAnswer\\YesNoCd","XMLPath1":"PagePolicyData\\ValidationMessage\\PageContent\\ACORD\\PersAutoLineBusiness\\QuestionAnswer\\YesNoCd","XMLCondPath":"Root\\PagePolicyData\\ValidationMessage\\PageContent\\ACORD\\PersAutoLineBusiness\\QuestionAnswer{((YesNoCd != ''))}\\YesNoCd"}},{"category":"Comment","location":"450 50","size":"150 38","figure":"RoundedRectangle","text":"Summary Check"}]','RulesArray':'{"0":"Check Bypass","1":"Bypass Edorsement","2":"Statement Questions"}'}
  </code></pre>