Значения регулярного выражения в ответе JSON

Я хочу регулярно выражать значение ответа JSON в AJAX без потери структуры JSON. вот это аякс

$.ajax({
    url: "date.php",
    type: "POST",
    data: formData,
    processData: false,
    contentType: false,
    dataType: "json",
    headers: {
        "X-Requested-With": "XMLHttpRequest",
    },
    success: function(data) {
        var formDatax = new FormData();
        var date = data.results;
        var res = date.map(function(item) {
            return { 
            "images": item.images
            };
        });

        $.ajax({
            url: "json.php",
            type: "POST",
            data: JSON.stringify(res),
            processData: false,
            contentType: false,
            dataType: "json",
            headers: {
                "X-Requested-With": "XMLHttpRequest",
            },
            success: function(data) {

            },
            error: function() {}
        });
    },
    error: function() {}
});

Вот пример ответа JSON

{  
      "part_number_key":"DDASDAS",
      "name":"ASD",
      "description":"asd",
      "price":12,
      "general_stock":12,
      "brand":"ASD",
      "category_id":2776,
      "images":[  
         {  
            "url":"https://asd.com/asd/asd/1241.jpg",
            "display_type":1
         },
         {  
            "url":"https://asd.com/asd/asd/73223.jpg",
            "display_type":0
         },
         {  
            "url":"https://asd.com/asd/asd/214121.jpg",
            "display_type":0
         }
      ],
      "warranty":24
   },

Я хочу получить ссылку на изображение, где display_type имеет значение 1, поэтому я подумал, что это нормально, если я регулярно использую первый URL-адрес перед «display_type»: 1, но я не могу, потому что это не строка для регулярного выражения.

/(https?\://[^\" ][^]).*("display_type":1)/i

Регулярное выражение не завершено, потому что я видел проблему со строкой, которую я не пытался завершить регулярное выражение...

вам нужно будет разобрать json

Geoffroy 11.03.2019 15:30

Используйте JSON.parse(responseString), затем найдите изображения в json <jsonObject>.images.forEach(item => {if item["display_type"] == 1 ....})

Juky 11.03.2019 15:31

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

Toto 11.03.2019 15:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
244
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Тип ответа всегда анализируется JSON. Вы можете просто получить доступ к изображениям с display_type: 1 следующим образом:

let fileterImages = data.data.images.map((image) => {
  if (image.display_type === 1) return image.url;
}

Ответ принят как подходящий

Вы можете проанализировать JSON и использовать фильтр и карту, чтобы получить URL-адрес изображения.

success: function(data) {
   var response = JSON.parse(data)
   var imagesURL = response.images.filter(image => image.display_type).map(image => image.url)
}
var imagesURL = item.images.filter(image => image.display_type === 1).map(image => image.url) Это был правильный путь для меня, потому что он был на месте переменной res. СПАСИБО БОЛЬШОЕ !!!
cristi alexandru 11.03.2019 16:01

Еще один вопрос, я только что увидел еще одну проблему ... Некоторые ответы имеют значение true, а не 1, я пытался var imagesURL = item.images.filter(image => image.display_type === 1 && image.display_type === true).map(image => image.url) проверить несколько условий, но не работает, и я действительно не знаю, как .filter это работает Я пытался искать в Google, но видел только разные структуры функций.

cristi alexandru 11.03.2019 16:17
var imagesURL = item.images.filter(image => image.display_type === 1).map(image => image.url) var imagesURLtr = item.images.filter(image => image.display_type === true).map(image => image.url) console.info(imagesURL); if (imagesURL.length > 0) { var imagesURLf = item.images.filter(image => image.display_type === 1).map(image => image.url) }else if (imagesURLtr.length > 0) { var imagesURLf = item.images.filter(image => image.display_type === true).map(image => image.url) } Я так сделал и теперь все ок!
cristi alexandru 11.03.2019 16:34

В своей попытке вы использовали условие &&, но display_type не может быть истинным И 1. Вы должны использовать || быть правдой ИЛИ 1. В моем отредактированном ответе вы можете видеть, что я не сравниваю display_type , Javascript автоматически проверит, является ли переменная истинной или 1

rafaelncarvalho 11.03.2019 17:33

Другие вопросы по теме