Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 5985
Hei.

Har en Array med mange stringer. En string ser slik ut:

@{DeviceID=C:; Name=C:; VolumeName=; Size=321596157952; FreeSpace=278103556096; Description=Local Fixed Disk; Status=; StatusInfo=; SystemName=MRBCK02; VolumeSerialNumber=8E22D49E}

Trodde dette lett konverteres til object med JSON.parse , men får det ikke til.

Noen som har noe forslag til hvordan jeg kan løse dette enklest mulig ?

Kaizen.
Sist endret av Kaizen; 15. januar 2021 kl. 14:19. Grunn: Rettet feil
Trigonoceps occipita
vidarlo's Avatar
Donor
Det er ikkje JSON. Du kan neppe bruke JSON-parser for å parse ting som ikkje er JSON.

Med mindre det er eit standardisert format, så må du nesten splitte det i substrings manuelt (split på , og splitte opp i variabel og variabelnavn etter det. Det er relativt enkelt på så enkel og standardisert string...
Del opp arrayet som vidarlo sier (splittes med ";").
Kaizen's Avatar
Trådstarter
Hei.
Takk for svar. Håpet det var en enklere måte å gjøre det på.

Endte opp med denne koden:

Kode

var diskstring = diskarray[disks];
//diskstring.replace('@','');
var n = diskstring.indexOf(";");
var diskID = diskstring.substring(11, n);
diskstring = diskstring.substring(n+1,diskstring.length);
n = diskstring.indexOf(";");
var diskName = diskstring.substring(6, n);
diskstring = diskstring.substring(n+1,diskstring.length);
n = diskstring.indexOf(";");
if(n <= 12) { 
     var volumeName = "NotSet";
} else {
     var volumeName = diskstring.substring(12, n);
}
diskstring = diskstring.substring(n+1,diskstring.length);
n = diskstring.indexOf(";");

var diskSize = diskstring.substring(6, n);
diskstring = diskstring.substring(n+1,diskstring.length);
n = diskstring.indexOf(";");

var diskFreeSpace = diskstring.substring(11, n);
diskstring = diskstring.substring(n+1,diskstring.length);
n = diskstring.indexOf(";");

var diskDescription = diskstring.substring(13, n);
diskstring = diskstring.substring(n+1,diskstring.length);
n = diskstring.indexOf(";");

var diskAddinfo = diskstring;
Kaizen.

Hm Mulig jeg kunne gjort dette enklere med en splitt ja...
Sist endret av Kaizen; 15. januar 2021 kl. 15:44. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Lenge siden jeg har skrevet javascript men dette er hvordan jeg hadde logisk gått frem for å løse dette. Du står så igjen med en dictionary med samme variabelnavn.

Kode

// Kanskje fjerne '@{' og '}' fra strengen først.

var splitDiskString = diskString.split(";")

var dict = {}
splitDiskString.forEach(function(ds){
    var keyVal = ds.split("=")
    // Trenger kanskje en sjekk på om keyVal[1] er tom.
    dict.push({
        key: keyVal[0],
        value: keyVal[1]
});
Sist endret av Vekst; 15. januar 2021 kl. 16:02.
Kaizen's Avatar
Trådstarter
Dette mye bedre kode ja.

Takker for svar.

Kaizen