JSON stringify正在添加反斜杠

时间:2016-03-02 06:23:55

标签: javascript angularjs json stringify

当字符串化的字符串直接发送给请求时,不会添加任何斜杠。

    var data = { "A": "Aa", "B": "Bb", "C": "Cc" }; // This is JSON object
        data = JSON.stringify(data); // Getting stringified
    var obj = {method: "POST", 
               url: 'http://..XX..XXX.....com',
               data: data // String is being sent as it is
              };
   $http(obj);// Have no slashes added
//Output: {"A":"Aa","B":"Bb","C":"Cc"}

但是如果将字符串化的字符串设置为对象的属性并将对象发送到服务器,则该字符串具有反斜杠。

        var data = { "A": "Aa", "B": "Bb", "C": "Cc" };
            data = JSON.stringify(data);
        var obj  = {method: "POST", 
                   url: 'XXX',
                   data: { // String is being sent as a value of object property "Values"
                       "Values": data 
                      }
                  };
       $http(obj);//Slashes are added

//output: {"Values":"{\"A\":\"Aa\",\"B\":\"Bb\",\"C\":\"Cc\"}"}

有人可以看一次吗?

1 个答案:

答案 0 :(得分:3)

如果你将其正确的行为字符串化。因为现在它不再是一个对象了。为什么不像这样将它完整发送到服务器。数据可以是字符串或对象

let modifier = {}
modifier["course_learn_list.$.quiz_score." + qnNumber] = selectedAnsNum
Meteor.users.update({
    _id: Meteor.userId(),
    "course_learn_list.course_id": courseId
}, {
    $set: {
        modifier
    }
})

如果你必须把它作为字符串发送。然后你必须在服务器上对它进行json_decode。