Node.js Json from String?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

In diesem Falle könnte man einfach den Text nehmen der von { bis } geht, und diesen dann mit JSON parsen.

Falls dein JSON-Objekt keine weiteren JSON-Objekte enthält, und im Text kein anderes { oder } vorkommt, könntest du es mit Regex machen:

const str = '[ <user> has data: {"result":true, "count":42} ]';
const jsonObject = JSON.parse(str.match(/{([^}]+)}/g));
console.log(jsonObject);
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

Lucnardo 
Fragesteller
 19.12.2021, 16:08

Das Problem ist das ich nie weiß wie lang das erste Wort ist

0
MrAmazing2  19.12.2021, 16:08
@Lucnardo

Das musst du auch nicht wissen, du musst nur wissen wo ein { ist und wo ein } ist, und dann den String von da bis da nehmen.

0
Lucnardo 
Fragesteller
 19.12.2021, 16:09
@MrAmazing2

wie würde das gehen oder nach was müsste ich da suchen?

0
Lucnardo 
Fragesteller
 19.12.2021, 16:16
@MrAmazing2

Okay sry weiteres Problem und zwar kommt dieser Json String ohne " an den Werten an... also in meinem fall <user> has data: {result :true, count :42}

0
Lucnardo 
Fragesteller
 19.12.2021, 16:27
@MrAmazing2

das würde funktionieren Problem sind die Kommas nach dem true, und manchmal macht er bei z.b. test: test_test einfach ein "test": test_test"

0
Lucnardo 
Fragesteller
 19.12.2021, 16:28
@Lucnardo

bei meinem anwendungs zweck gibt es auch zahlen nachdenen ein b folgt also -106b

0
Lucnardo 
Fragesteller
 19.12.2021, 16:28
@Lucnardo

LucnardoBooster has the following entity data: {Slot: -106b, id: "minecraft:gold_ingot", Count: 64b} <- Das wäre der eigentliche Json sting

0
MrAmazing2  19.12.2021, 16:39
@Lucnardo

Ich nutze einfach mal aus dass hinter dem Doppelpunkt eine Leertaste ist, um zu identifizieren, ob er Teil einer Value ist (wie bei minecraft:gold_ingot) oder Teil des JSONs.

Benutze folgenden Code:

const str = 'LucnardoBooster has the following entity data: {Slot: -106b, id: "minecraft:gold_ingot", Count: 64b}';
const jsonObject = JSON.parse(str.match(/{([^}]+)}/g)[0].replace(/: /g, '": ').replace(/{/g, '{"').replace(/, /g, ', "').replace(/([0-9]+)b/g, "$1"));
console.log(jsonObject);
1