如何将JSON字符串放入对象而不是一个长字符串

时间:2018-06-08 10:31:45

标签: javascript json ajax

我的JSON字符串如下所示:

{  
   "main_object":{  
      "id":"new",
      "formData":"language=nl_NL&getExerciseTitle=3213&question_takeAudio_exerciseWord%5B0%5D=3213&Syllablescounter%5B0%5D=3213S&Syllablescounter%5B1%5D=321"
   }
}

正如您所见,我有language=nl_NL,但我希望这样 - >> "language": "nl_NL等等,而非中间的&

这很可能是导致长字符串的原因 - >

function saveExerciseAjaxCall() {
    $("#my_form").on("submit", function(event) {
        event.preventDefault();
        $.ajax({
            url: 'saveJson.php',
            type: 'POST',
            data: {
                id: getUrlParameter('id'),
                formData: $('#my_form').serialize()
            },
            dataType: 'json',
        }).done(function(response) {

        });
    });
}

它所在的部分serialize(),但说实话:我不知道如何改变这一点,我读了一些关于serializeArray()的内容,但是会在我的JSON文件中显示它这个 - > "name": "exampleForStackOverflow": "value": "TheValueGiven"看起来像这样的东西。 那么有没有人有一个如何改变我的AJAX的解决方案,所以它不会成为一个长字符串?但它是否像"language": "nl_NL"等?

1 个答案:

答案 0 :(得分:0)

您可以将urlParameter格式转换为Object,如下所示:

var obj = {
  "id": "new",
  "formData": "language=nl_NL&getExerciseTitle=3213&question_takeAudio_exerciseWord%5B0%5D=3213&Syllablescounter%5B0%5D=3213S&Syllablescounter%5B1%5D=321"
};

obj.formData = JSON.parse('{"' + decodeURI(obj.formData).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}');

console.log(obj.formData);

在您的代码中:

function saveExerciseAjaxCall() {
    $("#my_form").on("submit", function(event) {
        event.preventDefault();
        $.ajax({
            url: 'saveJson.php',
            type: 'POST',
            data: {
                id: getUrlParameter('id'),
                formData: JSON.parse('{"' + decodeURI($('#my_form').serialize()).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}')
            },
            dataType: 'json',
        }).done(function(response) {

        });
    });
}

其他解决方案:

function saveExerciseAjaxCall() {
    $("#my_form").on("submit", function(event) {
        event.preventDefault();
        $.ajax({
            url: 'saveJson.php',
            type: 'POST',
            data: $('#my_form').serialize() + "&id=" + getUrlParameter('id'),
        }).done(function(response) {

        });
    });
}