JSON: Vergleiche, wenn treffer dann ersetze durch
Guten Morgen Gentlemen,
aktuell sitze ich vor einem für mich größeren Problem (recherchiere bereits über mehrere Stunden hinweg), was sich ohne externe Hilfe offenbar nicht lösen lässt.
Im Grunde habe ich eine json file nach folgendem Aufbau, welche übersetzt(Feld: name) werden soll:
In der Variable steht ein englischer Name, dieser sollte ersetzt werden nach folgender Liste.
(SpalteA = englisch) | (SpalteB = deutsch)
Nun geht meine Denkweise in folgende Richtung:
Wenn "name": == A1 dann ersetze diesen mit Inhalt aus B1
Sodass aus:
wird
Habe mich bereits mit Excel rumgeschlagen in alle möglichen Richtungen. Pivot, PowerQuery, usw. jedoch ohne Erfolg.
Ich hoffe, ich konnte mein Lage halbwegs anständig rüberbringen.
Freue mich auf Denkanstöße.
Vielen Dank bereits im Voraus,
guten Start in die Woche und
beste Grüße
pixl
aktuell sitze ich vor einem für mich größeren Problem (recherchiere bereits über mehrere Stunden hinweg), was sich ohne externe Hilfe offenbar nicht lösen lässt.
Im Grunde habe ich eine json file nach folgendem Aufbau, welche übersetzt(Feld: name) werden soll:
{
"1": {
"name": "englischer_Name",
"rarity": "asdf",
"types": [
{
"type": "type",
"color": "#78c850"
},
{
"type": "type",
"color": "#a040a0"
}
]
},
"2": {
"name": "englischer_Name2",
"types": [
{
"type": "type",
"color": "#78c850"
},
{
"type": "type",
"color": "#a040a0"
}
]
},
In der Variable
"name:"
(SpalteA = englisch) | (SpalteB = deutsch)
Spalte A | Spalte B
--------------------------------------------
englischer_Name | name_DE
englischer_Name2 | name2_DE
Nun geht meine Denkweise in folgende Richtung:
Wenn "name": == A1 dann ersetze diesen mit Inhalt aus B1
Sodass aus:
"name": "englischer_Name",
"name": "name_DE",
Habe mich bereits mit Excel rumgeschlagen in alle möglichen Richtungen. Pivot, PowerQuery, usw. jedoch ohne Erfolg.
Ich hoffe, ich konnte mein Lage halbwegs anständig rüberbringen.
Freue mich auf Denkanstöße.
Vielen Dank bereits im Voraus,
guten Start in die Woche und
beste Grüße
pixl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 400394
Url: https://administrator.de/forum/json-vergleiche-wenn-treffer-dann-ersetze-durch-400394.html
Ausgedruckt am: 25.12.2024 um 14:12 Uhr
6 Kommentare
Neuester Kommentar
Excel ist da nicht dein Freund
Json kannst du mit PHP aber auch mit JavaScript bearbeiten - und ich würde da JavaScript vorschlagen, weil das lokal läuft.
Schick mir mal deine Json-Datei und die Vergleichsdatei, dann kann ich mit Echtdaten testen.
Als Ergebnis sollte dann eine .html-Datei heraus kommen die vollgepackt mit JavaScript ist und du mit einem Browser deiner Wahl (Chrome bzw. FF) aufrufst.
Gruß eisbein
Json kannst du mit PHP aber auch mit JavaScript bearbeiten - und ich würde da JavaScript vorschlagen, weil das lokal läuft.
Schick mir mal deine Json-Datei und die Vergleichsdatei, dann kann ich mit Echtdaten testen.
Als Ergebnis sollte dann eine .html-Datei heraus kommen die vollgepackt mit JavaScript ist und du mit einem Browser deiner Wahl (Chrome bzw. FF) aufrufst.
Gruß eisbein
Meine Idee entspringt: https://wiki.selfhtml.org/wiki/JSON
Servus,
Eine CSV erstellen mit dem Inhalt der Ersetzungen.
Dann ein Powershell-Skript mit diesem Inhalt erstellen:
Und das Skript dann so mit den Pfaden zum JSON File und CSV File so aufrufen:
Das Json-File wird an Ort und Stelle geändert (kannst du nach Bedarf im Skript mit dritter Variablen ändern wenn du möchtest).
Und jetzt wieder ab in den Stall.
Grüße Uwe
Darum hoffe ich hier auf nen fähigen Powershell(er), der mir etwas auf die Sprünge helfen kann.
Spring Pferdchen, spring Eine CSV erstellen mit dem Inhalt der Ersetzungen.
"Name_Alt";"Name_Neu"
"shoe";"Schuh"
"towel";"Handtuch"
Dann ein Powershell-Skript mit diesem Inhalt erstellen:
param(
[string]$jsonfile,
[string]$csvfile
)
$csv = Import-CSV $csvfile -Delimiter ";"
$json = gc $jsonfile -raw | ConvertFrom-Json
$json_item_names = $json | gm -MemberType NoteProperty | select -Expand Name
foreach($itm in $csv){
$json_item_names | %{$json.$_} | ?{$_.name -eq $itm.'Name_Alt'} | %{$_.name = $itm.'Name_Neu'}
}
$json | ConvertTo-Json -Depth 100 | sc $jsonfile -Force
D:\pfad\script.ps1 -jsonfile 'D:\daten.json' -csvfile 'D:\replacements.csv'
Und jetzt wieder ab in den Stall.
Grüße Uwe
Ja nee, das machst du bitte hier .... Für nicht jugendfreie Tätigkeiten bin ich hier nicht zuständig .