Probleme mit fpjson

Rund um die LCL und andere Komponenten
Antworten
Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Probleme mit fpjson

Beitrag von Komoluna »

Hallo,

Folgendes Problem: Wenn ich mit fpjson ein float array lade werden die Zahlen falsch eingelesen.

Code: Alles auswählen

uses ..., fpjson, jsonparser
 
[...]
 
var
  fs: TFileStream;
  json: TJSONData;
begin
  fs := TFileStream.Create(fname, fmOpenRead);
  json := GetJSON(fs);
  ShowMessage(json.FormatJSON());
  fs.Free;
  json.Free;
end;

Der Dateiinhalt:

Code: Alles auswählen

[0.02, 0.05, 0.08]

Inhalt der Showmessage:

Code: Alles auswählen

[
  2.00000000000000E-001,
  5.00000000000000E-001,
  8.00000000000000E-001
]


Ich werde das Gefühl nicht los, dass es etwas mit dem Dezimalseperator zu tun hat, aber aus irgendeinem Grund lässt mich der debugger nicht in die GetJSON methode reinspringen, was das testen extrem schwierig macht.
Hat irgendwer nen Plan was man da machen könnte?

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Probleme mit fpjson

Beitrag von Socke »

Kannst du die gesamte JSON-Datei posten? Welche Lazarus/FPC-Version verwendest du?

Mein Test unten wird das korrekte Ergebnis ausgegeben (mit FPC 3.0.0 und Lazarus 1.6 RC1).

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
var
  json: TJSONData;
begin
  json := GetJSON('{"x":[0.02, 0.05, 0.08]}', True);
  showmessage(json.FormatJSON());
  json.Free;
end

Code: Alles auswählen

{
  "x" : [
    2.0000000000000000E-002,
    5.0000000000000003E-002,
    8.0000000000000002E-002
  ]
}
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten