Api auslesen und in Json Datei speichen - Javascript (node js)

Cellsplitter

Neues Mitglied
Hallo, ich brauch mal eure Hilfe und zwar möchte ich den Inhalt einer API in einer json Datei speichern, das klappt auch soweit super, doch ist mir der Inhalt der Json Datei zu viel.

Api auslesen und in Json speichen via fs.writeFileSync:

Javascript:
function getPriceList() {
    request(priceUrl, (error, response, body) => {
        if (error || response.statusCode !== 200) return console.log(`Error: ${error} - Status Code: ${response.statusCode}`);
        //console.log("DEBUG: " + body);
        fs.writeFileSync("prices.json", JSON.stringify(JSON.parse(body), null, 2));
      
    });
}

getPriceList();

Snippet aus der erzeugten prices.json Datei:
Javascript:
{
  "status": "success",
  "prices": [
    {
      "app_id": "730",
      "context_id": "2",
      "market_hash_name": "'Blueberries' Buckshot | NSWC SEAL",
      "price": "1.71",
      "pricing_mode": "market",
      "skewness": "-0.49",
      "created_at": 1631410301,
      "icon_url": null,
      "name_color": null,
      "quality_color": null,
      "rarity_color": null,
      "instant_sale_price": null
    },
    {
      "app_id": "730",
      "context_id": "2",
      "market_hash_name": "'The Doctor' Romanov | Sabre",
      "price": "3.06",
      "pricing_mode": "market",
      "skewness": "-0.05",
      "created_at": 1631419491,
      "icon_url": null,
      "name_color": null,
      "quality_color": null,
      "rarity_color": null,
      "instant_sale_price": "1.22"
    },
    {
      "app_id": "730",
      "context_id": "2",
      "market_hash_name": "'Two Times' McCoy | TACP Cavalry",
      "price": "1.23",
      "pricing_mode": "market",
      "skewness": "-0.11",
      "created_at": 1631407484,
      "icon_url": null,
      "name_color": null,
      "quality_color": null,
      "rarity_color": null,
      "instant_sale_price": null
    }
  ]
}

Dies Ausgabe ist mir zu viel. Wie bekomme ich es hin, das die json Datei nur noch folgendes beinhaltet:

Javascript:
{
  "'Blueberries' Buckshot | NSWC SEAL": 1.71,
  "'The Doctor' Romanov | Sabre": 3.06,
  "'Two Times' McCoy | TACP Cavalry": 1.23
}

Also quasi nur noch alle

"market_hash_name": price

In diesem Format in der json speichert?

MfG
 

Oneixee5

Top Contributor
Man kann einfach ein neues JS-Object erstellen und die gewünschten Eigenschaften aus body in das neue Objekt übertragen. Eine andere Möglichkeit wäre, hier: JSON.stringify(JSON.parse(body), null, 2) statt für den replacer null zu verwenden eine replacer-Funktion einzusetzen.
 

krgewb

Top Contributor
Du musst den String selbst zusammenbauen lassen.
Java:
String s = "";
s += "{";
for (int i = 0; i < bla.size(); i++) {
  Double price = Double.parseDouble(bla.get(i).getPrice());
  s += "\"" + bla.get(i).getMarketHashName() +  "\": " + price;
  if(i < bla.size() - 1) {
    s += ",";
  }
}
s += "}";

Automatisch wirst du es nämlich nicht schaffen. Dazu bräuchtest du eine Klasse mit den ganzen Variablen. Eine Variable hieße dann blueberriesBuckshotNSWCSEAL und die Annotation "'Blueberries' Buckshot | NSWC SEAL".
 

Cellsplitter

Neues Mitglied
Du musst den String selbst zusammenbauen lassen.
Java:
String s = "";
s += "{";
for (int i = 0; i < bla.size(); i++) {
  Double price = Double.parseDouble(bla.get(i).getPrice());
  s += "\"" + bla.get(i).getMarketHashName() +  "\": " + price;
  if(i < bla.size() - 1) {
    s += ",";
  }
}
s += "}";

Automatisch wirst du es nämlich nicht schaffen. Dazu bräuchtest du eine Klasse mit den ganzen Variablen. Eine Variable hieße dann blueberriesBuckshotNSWCSEAL und die Annotation "'Blueberries' Buckshot | NSWC SEAL".
Vielen Dank für die schnelle Antwort, beim überfliegen sieht der Ansatz einleuchtend aus, bin nur leider blutiger Anfänger was JS angeht und weiß nicht so recht wie ich das nun in mein Code einbauen muss, hab es eben probiert aber bin leider gescheitert.
 

thecain

Top Contributor
Du musst den String selbst zusammenbauen lassen.
Java:
String s = "";
s += "{";
for (int i = 0; i < bla.size(); i++) {
  Double price = Double.parseDouble(bla.get(i).getPrice());
  s += "\"" + bla.get(i).getMarketHashName() +  "\": " + price;
  if(i < bla.size() - 1) {
    s += ",";
  }
}
s += "}";

Automatisch wirst du es nämlich nicht schaffen. Dazu bräuchtest du eine Klasse mit den ganzen Variablen. Eine Variable hieße dann blueberriesBuckshotNSWCSEAL und die Annotation "'Blueberries' Buckshot | NSWC SEAL".
Nein, das ist quatsch.

1. Der TE arbeitet mit Javascript nicht Java
2. Auch in Java wäre deine Lösung nicht gut. Die Namen kann man in allen namhaften Json Libraries per Annotation o.ä. konfigurieren.

Der Ansatz von @Oneixee5 müsste passen.
 

Thallius

Top Contributor
Nein da würde dann ja auch nicht aus dem marketing Namen ein Key mit dem price als Value.

Ich denke das geht nur über selbst geschriebenen Code

[CODE lang="java" title="Create New Array"]
const oldArray = JSON.parse(jsonfile);
let newArray = [];
oldArray.prices.forEach((element) => newArray.push({ element.market_hash_name : element.price }));
[/CODE]
 

mrBrown

Super-Moderator
Mitarbeiter
Damit wenigstens noch ein funktionierender Ansatz gezeigt wird ;)

Javascript:
JSON.parse(body)
  .prices
  .reduce((agg,price) => {
      agg[price.market_hash_name]=Number(price.price);
      return agg
    }, {})
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Richtiges Auslesen von mehreren Daten im JSON Format via JavaScript Angular, React, JQuery - Fragen zu JavaScript 2
G Variablen aus URL auslesen und in HTML darstellen Angular, React, JQuery - Fragen zu JavaScript 1
G Datumsfeld auslesen Angular, React, JQuery - Fragen zu JavaScript 2
D Java Aktienkurs auslesen Angular, React, JQuery - Fragen zu JavaScript 2
P Anzahl der Checkboxen auslesen Angular, React, JQuery - Fragen zu JavaScript 4
S Webseitenelemente ansteuern/auslesen Angular, React, JQuery - Fragen zu JavaScript 5
nrg Funktionen von Objekt auslesen Angular, React, JQuery - Fragen zu JavaScript 10
A Mit JavaScript AJAX-Calls auslesen? Angular, React, JQuery - Fragen zu JavaScript 4
G html mit java auslesen Angular, React, JQuery - Fragen zu JavaScript 6
C cd/dvd namen auslesen Angular, React, JQuery - Fragen zu JavaScript 2
F Auslesen unterschiedlicher Marker mit Goole Maps API Angular, React, JQuery - Fragen zu JavaScript 4
K Datei auslesen Angular, React, JQuery - Fragen zu JavaScript 2
H Zelle einer Tabelle auslesen Angular, React, JQuery - Fragen zu JavaScript 2
R zyklisch ein Applet Rückgabewert auslesen, so alle 1-2 sek? Angular, React, JQuery - Fragen zu JavaScript 4
T Anzahl Dateien in Verzeichnis mit JavaScript auslesen Angular, React, JQuery - Fragen zu JavaScript 2
P Wert aus Formular vom anderen Frame auslesen Angular, React, JQuery - Fragen zu JavaScript 2
W Wert aus HTML-Quelltext auslesen Angular, React, JQuery - Fragen zu JavaScript 8
T Quelltext auslesen (Extern) . Intern einfügen. Angular, React, JQuery - Fragen zu JavaScript 2
Zeppi Javascript JSON in ein Array Angular, React, JQuery - Fragen zu JavaScript 1
L JSON-Daten aus einen Server mit fetch holen Angular, React, JQuery - Fragen zu JavaScript 3
P Angular geschachteltes json-Objekt verändern Angular, React, JQuery - Fragen zu JavaScript 3
N Antworten einer Quizfrage aus der Json Datenbank mappen Angular, React, JQuery - Fragen zu JavaScript 25
pkm Frage: Uncaught SyntaxError: JSON.parse: expected property name or '}' Angular, React, JQuery - Fragen zu JavaScript 5
M JSon aus FireFox verschicken und empfangen. Angular, React, JQuery - Fragen zu JavaScript 2
F JSON Datei in JavaScript einbinden Angular, React, JQuery - Fragen zu JavaScript 1
B php Datei in JavaScript öffnen Angular, React, JQuery - Fragen zu JavaScript 9
Aleyna_ Einbinden von js (ts) und HTML-Datei funktioniert nicht Angular, React, JQuery - Fragen zu JavaScript 16
C Inhalt als Datei auf Server speichern Angular, React, JQuery - Fragen zu JavaScript 8
M Mit innerHTML in eine bestimmte HTML-Datei schreiben Angular, React, JQuery - Fragen zu JavaScript 8
krgewb Datei lesen und Datei erstellen Angular, React, JQuery - Fragen zu JavaScript 3
N Problem - Google Analytics Tracking Javascript Datei von eigenen Server laden Angular, React, JQuery - Fragen zu JavaScript 1
S bat-Datei über Firefox ausführen Angular, React, JQuery - Fragen zu JavaScript 5
S Java "Kommentar" und XLS Datei in Browser implementieren Angular, React, JQuery - Fragen zu JavaScript 2
R Java Script in ein Htm Datei einbinden? Angular, React, JQuery - Fragen zu JavaScript 4
S Problem mit Aufruf einer *.js-Datei Angular, React, JQuery - Fragen zu JavaScript 2
P Formular wird abgeschickt - php-datei öffnet sich nicht Angular, React, JQuery - Fragen zu JavaScript 3
C Datei per JS auf Festplatte speichern. Angular, React, JQuery - Fragen zu JavaScript 3
T die externe javascript datei Angular, React, JQuery - Fragen zu JavaScript 3
G Erstellungsdatum/-zeit einer anderen Datei ausgeben Angular, React, JQuery - Fragen zu JavaScript 2
D *.js-datei bei Seitenaufruf laden Angular, React, JQuery - Fragen zu JavaScript 2

Ähnliche Java Themen

Neue Themen


Oben