Как правильно извлечь файл из файла JSON с помощью jQuery / plain JS? - PullRequest
0 голосов
/ 03 апреля 2020

Решено

Оказывается, я испортила JSON, пытаясь это исправить. Спасибо за помощь. Показал мне несколько новых способов использования json:)

Я перебрал множество других вопросов, попробовал ответы, некоторые сделали что-то, другие просто выдавали ошибку. Если это сработало, он записал весь список метаданных (включая json данные, которые я хочу) на консоль:

{…}
​
abort: function abort(e)​
always: function always()​
catch: function catch(e)​
done: function add()​
fail: function add()​
getAllResponseHeaders: function getAllResponseHeaders()​
getResponseHeader: function getResponseHeader(e)​
overrideMimeType: function overrideMimeType(e)​
pipe: function pipe()​
progress: function add()​
promise: function promise(e)
​
readyState: 4
​
responseText: "<JSON content>"
​
setRequestHeader: function setRequestHeader(e, t)​
state: function state()
​
status: 200
​
statusCode: function statusCode(e)
​
statusText: "OK"
​
then: function then(t, n, r)​
<prototype>: Object { … }

Итак, мой вопрос: как мне получить содержимое json из это?

Используемый код:

function start() {
  var j = $.ajax({
    url: 'users.json',
    type: "GET",
    dataType: "json",
    success: function (data) {
      console.log(data);
    }
  });
}

Json:

        "UsersByID":[ {
                "id": 1
                "Name": ["K", "L", "Smiths"],
                "Birthday": ["03", "10", "1987"],
                "Username": "user1",
                "Password": "verysafepassword",
                "Hollidays": [{
                        "HollidayId": 1
                        "HollidayType": 2,
                        "AmountOfPeople": 5,
                        "Date": ["18", "08", "2020"]
                        }{
                        "HollidayId": 2
                        "HollidayType": 3,
                        "AmountOfPeople": 2,
                        "Date": ["24", "10", "2020"]
                        }

                }]

        }]
    }
}

1 Ответ

0 голосов
/ 03 апреля 2020

Что вы обычно делаете (просто javascript) - фильтровать через доставленный JSON. Так как я не знаю, что вы хотите отфильтровать, какой-то псевдокод, как это работает:

   function start() {
     var j = $.ajax({
       url: 'users.json',
       type: "GET",
       dataType: "json",
       success: function (response) { //data is a keyword so better use response
         console.log(response);

        response.data.forEach(function(field) { // we iterate through each field in the JSON
         if (field.typeField == "UsersByID") {  // Given the JSON part looks like {"UsersByID":{"myBigData": "secrets","yourBigData": "noSecrets"}}
        console.info("My content found"); 
        // Do whatever you have to do with the content
        }
      }); // for each END

    }
  });
}

РЕДАКТИРОВАТЬ Для обработки JSON есть различные возможности Если вы знаете, что происходит Вы фильтруете, как я делал выше, а затем что-то делаете с результатом.
Другой способ, если вам не нужно извлекать, но весь ответ - это необходимое JSON, которое вы делаете следующим образом (и, конечно, вы можете комбинировать )

function start() {
     var j = $.ajax({
       url: 'users.json',
       type: "GET",
       dataType: "json",
       success: function (response) { //data is a keyword so better use response
         console.log(response);
         var myObj = JSON.parse(response);
        // Do whatever you have to do with myObj e.g.
       var u_username = myObj.Username; // you retrieve from the object with the field names
  // when nested you get a new object and then you retrieve
    var objHollidays = myObj.Hollidays;
    var u_HollidayId = objHollidays.HollidayId;
    // OR you iterate over all objHollidays 
    objHollidays.HollidayId.forEach(function(field) { // we iterate through each 
        //Do whatever you need
       });
    }
  });
} 

Даты разбора
Объекты даты не допускаются в JSON.
Если вам нужно включить дату, запишите ее в виде строки.
Вы можете преобразовать ее обратно в объект даты позже:

 var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
 var obj = JSON.parse(text);
 obj.birth = new Date(obj.birth);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...