Я хочу получить конкретные данные из файла JSON и добавить их в другой файл / переменную JSON - PullRequest
0 голосов
/ 15 января 2019

, поэтому я хочу получить данные из этого API: http://csgobackpack.net/api/GetItemsList/v2/ Его большая база данных, поэтому я хочу получить только немного информации для каждого элемента, например, 7 дней. И чем сохранить его в моем файле. Но когда я использую пустой объект, самый первый объект в переменной "[Объект] [объект]"

Request.get("http://csgobackpack.net/api/GetItemsList/v2/", {
    json: true
}, (error, response, body) => { 
      csgo = new Object();
      if(body['success']) {
       for(let key in body.items_list)
          csgo+=("\"" + body.items_list[key].name + "\" :{" 
"\"icon\"" + ":" + "\"" + body.items_list[key].icon_url + "\","+
"\"exterior\"" + ":" + "\"" + body.items_list[key].exterior + "\"}"

}

1 Ответ

0 голосов
/ 15 января 2019

К сожалению, JSON до сих пор вызывает много путаницы. JSON - это текст . Текст, который использует синтаксис, очень похожий на то, как объекты определены в JavaScript.
Код, который вы используете, использует json: true, а Request.get, следовательно, анализирует ответ в объект для вас. Это становится понятным, когда вы используете if (body['success']), поскольку, если бы ответ API был строкой, свойства success не было бы.

Это означает, что JSON теперь полностью отсутствует, мы имеем дело только с объектами JavaScript. Мы можем получить доступ к их свойствам с помощью точечных или квадратных скобок и создать новые.

Вот код, который захватит первые 5 элементов и зарегистрирует результат:

const Request = require("request");

Request.get("http://csgobackpack.net/api/GetItemsList/v2/", { json: true }, (error, response, body) => {
    // body contains the JSON reply already parsed into a JS Object
    csgo = new Object();
    if (body['success']) {
        var limit = 5;
        for (let key in body.items_list) {
            // shorter way to grab multiple properties
            const { icon_url, exterior } = body.items_list[key];
            // add child to csgo
            csgo[key] = { icon: icon_url, exterior }; // OR: exterior: exterior
            if (--limit === 0) break;
        }
        console.log(csgo);
    }
});

Ключевая часть

csgo[key] = { icon: icon_url, exterior };

Новое свойство добавляется к объекту и присваивается литералу указанного объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...