nepixl
Goto Top

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:

{
  "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:"  
steht ein englischer Name, dieser sollte ersetzt werden nach folgender Liste.

(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",   
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

Content-ID: 400394

Url: https://administrator.de/contentid/400394

Ausgedruckt am: 24.11.2024 um 16:11 Uhr

eisbein
eisbein 04.02.2019 aktualisiert um 08:44:21 Uhr
Goto Top
Excel ist da nicht dein Freund face-wink

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
eisbein
eisbein 04.02.2019 um 08:39:11 Uhr
Goto Top
Meine Idee entspringt: https://wiki.selfhtml.org/wiki/JSON
nepixl
nepixl 04.02.2019 um 08:40:30 Uhr
Goto Top
Hi eisbein,

Excel ist da nicht dein Freund
zu diesem Schluss komme ich auch immer mehr.
Darum hoffe ich hier auf nen fähigen Powershell(er), der mir etwas auf die Sprünge helfen kann. face-smile

Als Ergebnis sollte dann eine .html-Datei heraus
solange die Struktur der json-file erhalten bleibt, wäre das ideal face-smile

- Lasse Dir gerne mal die json-file zukommen.

Danke und Gruß
colinardo
Lösung colinardo 04.02.2019, aktualisiert am 05.02.2019 um 20:25:51 Uhr
Goto Top
Servus,
Darum hoffe ich hier auf nen fähigen Powershell(er), der mir etwas auf die Sprünge helfen kann.
Spring Pferdchen, spring face-smile

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
Und das Skript dann so mit den Pfaden zum JSON File und CSV File so aufrufen:
D:\pfad\script.ps1 -jsonfile 'D:\daten.json' -csvfile 'D:\replacements.csv'  
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
nepixl
nepixl 04.02.2019 um 09:20:19 Uhr
Goto Top
Hallo Uwe,

sensationell! Mit sowas hatte ich bereits geliebäugelt jedoch kläglich daran gescheitert!

Spring Pferdchen, spring
Eher *streichel* kannste ma? *weiterstreichel* face-smile

Vielen lieben Dank - werde ich umgehend testen und ggf. Feedback leisten.

..vielleicht kann ich Dir ja auch mal einen Stein in den Garten werfen.. ;)

Beste Grüße
colinardo
colinardo 04.02.2019 aktualisiert um 09:30:18 Uhr
Goto Top
Zitat von @nepixl:
Eher *streichel* kannste ma? *weiterstreichel* face-smile
Ja nee, das machst du bitte hier .... Für nicht jugendfreie Tätigkeiten bin ich hier nicht zuständig face-smile.