AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JSONValue ändern

Ein Thema von Codehunter · begonnen am 16. Jul 2018 · letzter Beitrag vom 16. Jul 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#1

JSONValue ändern

  Alt 16. Jul 2018, 10:05
Delphi-Version: 10.2 Tokyo
Moin!

Montag früh und massiver Weekend-Lag

Ich habe ein geparstes JSON-Object, zum Beispiel so:
Code:
{
  "value":"foo"
}
und möchte darin den Wert von "value" auf "bar" ändern. Das Ganze habe ich als TJSONObject vorliegen. Das Ding kann ich via Typecast zu TJSONString wunderbar auslesen, aber schreiben find ich spontan keine Lösung (TJSONString.Value ist readonly)

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.190 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: JSONValue ändern

  Alt 16. Jul 2018, 10:17
Das value/foo-Paar entfernen und ein neues hinzufügen?

Delphi-Quellcode:
procedure p();
const
   input = '{"value":"foo"}';
var
   jsonObject: TJSONObject;
begin
   jsonObject := TJSONObject.ParseJSONValue(input) as TJSONObject;
   try
      jsonObject.RemovePair('value').Free();
      jsonObject.AddPair('value', 'bar');
      // WriteLn( jsonObject.ToJSON() );
   finally
      jsonObject.Destroy();
   end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#3

AW: JSONValue ändern

  Alt 16. Jul 2018, 11:53
Das value/foo-Paar entfernen und ein neues hinzufügen?

Delphi-Quellcode:
procedure p();
const
   input = '{"value":"foo"}';
var
   jsonObject: TJSONObject;
begin
   jsonObject := TJSONObject.ParseJSONValue(input) as TJSONObject;
   try
      jsonObject.RemovePair('value').Free();
      jsonObject.AddPair('value', 'bar');
      // WriteLn( jsonObject.ToJSON() );
   finally
      jsonObject.Destroy();
   end;
end;
Tja, RemovePair funktioniert, AddPair nicht. Das Endergebnis ist dann um den betreffenden Wert ärmer. Eine Fehlermeldung gibts nicht, es passiert "einfach nur nix".
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: JSONValue ändern

  Alt 16. Jul 2018, 12:02
Tja, RemovePair funktioniert, AddPair nicht. Das Endergebnis ist dann um den betreffenden Wert ärmer. Eine Fehlermeldung gibts nicht, es passiert "einfach nur nix".
Im reinen Consolen-Testprojekt geht es doch?
Meinste in deinem Produktiv-Quelltext?

Delphi-Quellcode:
program Project5;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Json;

procedure p;
const
  input = '{"value":"foo"}';
var
  jsonObject: TJSONObject;
begin
  jsonObject := TJSONObject.ParseJSONValue(input) as TJSONObject;
  try
    WriteLn('Vorher: ', jsonObject.ToJSON);
    jsonObject.RemovePair('value').Free;
    jsonObject.AddPair('value', 'bar');
    WriteLn('Nachher: ', jsonObject.ToJSON);
  finally
    jsonObject.Free;
  end;
end;

begin
  try
    p;
  except
    on E: Exception do
      WriteLn(E.ClassName, ': ', E.Message);
  end;
  Readln;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#5

AW: JSONValue ändern

  Alt 16. Jul 2018, 12:04
Im reinen Consolen-Testprojekt geht es doch?
Kann ich bestätigen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.190 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: JSONValue ändern

  Alt 16. Jul 2018, 12:09
Langsam bekomme ich das Gefühl dass in "Tokyo" wieder ordentlich gedreht wurde damit einem nicht langweilig wird.

Geändert von Der schöne Günther (16. Jul 2018 um 12:10 Uhr) Grund: Uwe war schneller
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#7

AW: JSONValue ändern

  Alt 16. Jul 2018, 12:12
Kommando zurück! Es geht doch. Nur weil wie ich schon vermutete durch Add/Remove die Reihenfolge geändert wird, steht der geänderte Wert nun ganz am Ende und nicht da wo er ursprünglich war. Mein Fehler also!
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.190 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: JSONValue ändern

  Alt 16. Jul 2018, 12:33
Hör auf dir abzugewöhnen darauf zu achten wie es aussieht, das sind doch nur Daten
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#9

AW: JSONValue ändern

  Alt 16. Jul 2018, 10:18
Man kann den Value eines TJSONString nicht ändern, nur ergänzen mit AddValue oder neu erzeugen und den Wert bei Create mitgeben. Wenn der JSONString ein Teil eines JSONObjects ist, kannst du das gesamte Pair mit RemovePair/AddPair austauschen.

Es sieht irgendwie so aus, als wolltest du JSON anders verwenden als vorgesehen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.190 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: JSONValue ändern

  Alt 16. Jul 2018, 10:29
Ist ja nichts unanständiges dabei an diesem "Dokument" sich etwas herauszusuchen, dann ändern zu wollen und dann zurückzuspeichern. Hat man sich wahrscheinlich mit der Standard XML-Bibliothek so angewöhnt.

Ich lese immer komplett ein und schreibe später von neu auf zurück. Das ist immer am einfachsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz