2017-08-28 9 views
1

は、私は、サーバーへのクライアント側からJSONオブジェクトを送信するためにAJAXを使用しようとしています。私はJSONをとり、XMLとしてシリアル化してSQL Serverに格納したいと考えています。問題 - C#

私はPOSTを実行し、使用して文字列としてJSONを送信しています:

var Full_JSON = products_json[product_id]; 
    var Message = ""; 

    if (FULL_JSON == null) { 
     Message = "No Products_JSON!"; 
    } 

    if (Message.length == 0) { 
     $.ajax({ 
      type: "POST", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      url: "/Query.asmx/InsertXMLJSON", 
      data: "{'JSON':'" + JSON.stringify(Full_JSON) + "'}", 
      success: function (Record) { 
       if (Record.d == true) { 
        console.log("AJAX Success: " + JSON.stringify(Record)); 
       } 
       else { 
        console.log("AJAX Fail: " + JSON.stringify(Record)); 
       } 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       console.log("Status: " + textStatus); 
       console.log("Error: " + errorThrown); 
      } 
     }) 
    } 

私は、渡され、呼び出している「JSON」の文字列取る:これが呼び出されると

public static bool InsertXMLJSON(string UserEmail, string Time, string Product, string JSON) 
{ 
    System.Xml.XmlDocument xmlJSON = JsonConvert.DeserializeXmlNode(JSON, "root"); 
} 

予期しない値が解析された後、次のような例外が発生します。Q. Path 「Calculations.1.Calculation_Logic」、行1、位置4167.

ここでは、文字が検出されたJSON文字列の抜粋です:

\"Calculation_Logic\":\"Math.round((products_json[product_id][\"Questions\"][1][\"Answer\"])/(products_json[product_id][\"Questions\"][3][\"Answer\"]))\" 

私は引用のエスケープことに気づきました角括弧内の問題の一部と思われる。引用符を削除しても、それを解析するだけです。

これが問題を引き起こしてしまう理由を任意のアイデア?

答えて

0

あなたがFull_JSONと呼ばれる単純な文字列変数を文字列化することを私には思えます。 JSON.stringify(Full_JSON)の代わりに送信しようとしましたか?完全なコードサンプルがなければ、正確に何が文字列化しているのかを理解するのは難しいですが、おそらくそれが原因です。たとえば、次の推奨事項について

var str = '{"2003":{"1":{"2":["test"],"3":["test2"]}}}'; 
var obj = {"2003":{"1":{"2":["test"],"3":["test2"]}}}; 

//this one looks very similar to your problem 
console.log(JSON.stringify(str)); // {\"2003\":{\"1\":{\"2\":[\"test\"],\"3\":[\"test2\"]}}} 

//and this one is correct use of this component 
console.log(JSON.stringify(obj)); // {"2003":{"1":{"2":["test"],"3":["test2"]}}} 
+0

感謝。私はAJAXのコードスニペットをアップロードしました。 JSONオブジェクトで直接JSON.stringifyを呼び出しています。 – tremarkley