Подтвердить что ты не робот

Проблема с JSON.stringify добавляет дополнительные\и "" к моему объекту Json

Привет Я создаю с помощью Javascript массив объекта с ключом и значением, используя следующий код.

ValuesArray.push({ key: $(this).attr('someattribute'), value: $(this).val() });

В результате у меня есть массив таких объектов:

key:29; value: 'Country'
Key:12; value: '4,3,5'

когда я пытаюсь укрепить его и отправить этот JSON в сообщение, у меня есть неправильный форматированный JSON с\и "в тех местах, которые я не хочу этого делать, когда я пытаюсь desirales, что JSON как JObject на codebehind с С# я У меня возникли проблемы. Как я могу создать чистый JSON, используя stringify

var jObject = JSON.stringify(ValuesArray);

Теперь мой JSON не прав:

{
  "JObject": "[{\"key\":\"29\",\"value\":\"Country\"},  {\"key\":\"30\",\"value\":\"4,3,5\"}]"
}

Я хотел бы иметь объект JSON, подобный этому

{
  "JObject": [{"key":"29","value":"Country"},{"key":"30","value":"4,3,5"}]
}

без кавычек вокруг [] и символа \

Любая хорошая идея для его решения.

Спасибо

Подробнее об этом, как я отправляю JSON в свой API вот как я отправляю JSON в свой веб-API:

function PostAPIRequest(address) {

           var jObject = JSON.stringify(ValuesArray);

           var responseJson = null;
           $.ajax({
               url: address,
               type: 'POST',
               dataType: 'json',
               data: { JObject: jObject },
               success: function (data) {
                   responseJson = data
                   ProcessDataResponse(responseJson);
                   //TODO: REFRESH THE DATA GRID
               },
               error: function (xhr, ajaxOptions, thrownError) {
                   //TODO redirect to the error page and send error email there.
                   alert(xhr.status);
                   alert(thrownError);
               }
           })
       }

и это, как я получаю его в контроллере API

... //POST api/datavalues ​​/5

public string Post (int id, значение JObject)   {       var temp = значение;

...

4b9b3361

Ответ 1

Похоже, вы помещаете строку в качестве значения на вашей карте. Вы должны сделать что-то вроде:

var objMap = {"JObject" : ValuesArray}; var json = JSON.stringify(objMap)

Что происходит, так это то, что вы кодируете ваш массив с помощью double json - обратите внимание, что ваше "недопустимое" значение JSON на самом деле является строкой JSON, а не требуемым массивом.

ИЗМЕНИТЬ Похоже, что вы вставляете строки JSON карт в массив, а затем строим это. Здесь jsfiddle, который должен помочь вам получить то, что вы ищете - http://jsfiddle.net/4G5nF/

В своем почтовом запросе попробуйте

var jObject = {"JObject" : ValuesArray};
$.ajax({   url: address,
           type: 'POST',
           dataType: 'json',
           data: jObject,
           success: function (data)  { .. }});

Обратите внимание на изменение атрибута данных. Это значение, которое автоматически JSONified для вас.

Ответ 2

Возможно, у вас есть старая библиотека prototype. Когда я удаляю его, ошибка исчезла

Ответ 3

const config = {a: 1, b: 2}
console.log(JSON.stringify(JSON.stringify(config)))

"{\" a\ ": 1, \" b\ ": 2}"