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

Удалите двойные кавычки из данных возврата Json, используя JQuery

Я использую JQuery для получения данных Json, но данные, которые он отображает, имеют двойные кавычки. Там есть функция, чтобы удалить его?

$('div#ListingData').text(JSON.stringify(data.data.items[0].links[1].caption))

он возвращает:

"House"

Как удалить двойную кавычку? Приветствия.

4b9b3361

Ответ 1

Используйте replace:

var test = "\"House\"";
console.log(test);
console.log(test.replace(/\"/g, ""));  

// "House"
// House

Обратите внимание, что g на конце означает "глобальный" (заменить все).

Ответ 2

Для нужд ниши, когда вы знаете свои данные, как ваш пример... это работает:

JSON.parse(this_has_quotes);

Ответ 3

Метод stringfy не предназначен для разбора JSON, это для превращения объекта в строку JSON.

JSON анализируется jQuery, когда вы его загружаете, вам не нужно анализировать данные для его использования. Просто используйте строку в данных:

$('div#ListingData').text(data.data.items[0].links[1].caption);

Ответ 4

У меня также был этот вопрос, но в моем случае я не хотел использовать регулярное выражение, потому что мое значение JSON может содержать кавычки. Надеюсь, мой ответ поможет другим в будущем.

Я решил эту проблему, используя стандартный срез строки, чтобы удалить первый и последний символы. Это работает для меня, потому что я использовал JSON.stringify() в textarea, который его создал, и в результате я знаю, что я всегда буду иметь " на каждом конце строки.

В этом обобщенном примере response - это объект JSON, возвращаемый моим AJAX, и key - это имя моего ключа JSON.

response.key.slice(1, response.key.length-1)

Я использовал его таким образом, чтобы regex replace сохранял разрывы строк и записывал содержимое этого ключа в блок абзаца в моем HTML:

$('#description').html(studyData.description.slice(1, studyData.description.length-1).replace(/\\n/g, '<br/>'));

В этом случае $('#description') - это тег абзаца, который я пишу. studyData - мой объект JSON, а description - мой ключ с многострочным значением.

Ответ 5

Что вы делаете, это сделать строку JSON в вашем примере. Либо не используйте JSON.stringify(), либо если у вас когда-либо есть данные JSON, и вы не хотите котировок, просто используйте JSON.parse(), чтобы удалить цитаты вокруг ответов JSON! Не используйте регулярное выражение, нет необходимости.

Ответ 6

Я не думаю, что есть необходимость заменить любые кавычки, это идеально сформированная строка JSON, вам просто нужно преобразовать строку JSON в объект. Эта статья прекрасно объясняет ситуацию: Ссылка

Пример:

success: function (data) {

        // assuming that everything is correct and there is no exception being thrown
        // output string {"d":"{"username":"hi","email":"[email protected]","password":"123"}"}
        // now we need to remove the double quotes (as it will create problem and 
        // if double quotes aren't removed then this JSON string is useless)
        // The output string : {"d":"{"username":"hi","email":"[email protected]","password":"123"}"}
        // The required string : {"d":{username:"hi",email:"[email protected]",password:"123"}"}
        // For security reasons the d is added (indicating the return "data")
        // so actually we need to convert data.d into series of objects
        // Inbuilt function "JSON.Parse" will return streams of objects
        // JSON String : "{"username":"hi","email":"[email protected]","password":"123"}"
        console.log(data);                     // output  : Object {d="{"username":"hi","email":"[email protected]","password":"123"}"}
        console.log(data.d);                   // output : {"username":"hi","email":"[email protected]","password":"123"} (accessing what stored in "d")
        console.log(data.d[0]);                // output : {  (just accessing the first element of array of "strings")
        var content = JSON.parse(data.d);      // output : Object {username:"hi",email:"[email protected]",password:"123"}" (correct)
        console.log(content.username);         // output : hi 
        var _name = content.username;
        alert(_name);                         // hi

}