AGB  ·  Datenschutz  ·  Impressum  







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

Json auf Gleichheit prüfen

Ein Thema von Der schöne Günther · begonnen am 10. Nov 2017 · letzter Beitrag vom 10. Nov 2017
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#1

AW: Json auf Gleichheit prüfen

  Alt 10. Nov 2017, 10:06
Billiger Trick: Beide JSON-Objekte in JSON-Strings umwandeln und Die dann vergleichen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Json auf Gleichheit prüfen

  Alt 10. Nov 2017, 10:08
Aber das scheitert doch schon an der Reihenfolge:

Delphi-Quellcode:
const
   input1 = '{"someNumber": 42, "someText": "Hallo Welt"}';
   input2 = '{"someText": "Hallo Welt", "someNumber": 42}';
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.420 Beiträge
 
Delphi 12 Athens
 
#3

AW: Json auf Gleichheit prüfen

  Alt 10. Nov 2017, 10:16
Aber das scheitert doch schon an der Reihenfolge:
Und daran scheitert schon ein genereller Vergleich. Ergo, Du musst Dir diesen Vergleich selbst erstellen und Deine Anforderungen umsetzen.

......

P.S.: Logisch sind Deine Beispiele gleich, aber in bestimmten Instanzen mag der gleiche Inhalt mit unterschiedlicher Reihenfolge nicht "gleich genug" sein.
Lizbeth W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Json auf Gleichheit prüfen

  Alt 10. Nov 2017, 10:26
Aber Json ist per Definition nicht geordnet. Klar sind die Strings nicht die selben, aber in Json an sich ist die Reihenfolge doch egal:

Zitat:
An object is an unordered collection of zero or more name/value
pairs, where a name is a string and a value is a string, number,
boolean, null, object, or array.

An array is an ordered sequence of zero or more values.
Quelle: RFC 7159 (Hervorhebung durch mich)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.420 Beiträge
 
Delphi 12 Athens
 
#5

AW: Json auf Gleichheit prüfen

  Alt 10. Nov 2017, 10:38
Aber Json ist per Definition nicht geordnet. Klar sind die Strings nicht die selben, aber in Json an sich ist die Reihenfolge doch egal:
Das ist mir bewusst. Ändert aber nichts daran, das es in den Standard-Bibliotheken keinen Vergleich gibt und Du diesen selbständig machen musst.

......
Lizbeth W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
SebastianZ

Registriert seit: 23. Jul 2009
89 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Json auf Gleichheit prüfen

  Alt 10. Nov 2017, 11:01
Das musst du dir selbst basteln.

Mein Ansatz währe hier ein 2-stufiger Vergleich:
1. Die Textlänge des JSON-Strings vergleichen -> unterschiedliche länge, unterschiedliches JSON
2. Die einzelnen Json-Einträge vergleichen. Wie du auf diese Hinkommst ist hier gut ersichtlich:
https://stackoverflow.com/questions/...-in-rad-studio
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

AW: Json auf Gleichheit prüfen

  Alt 10. Nov 2017, 14:44
1. Die Textlänge des JSON-Strings vergleichen -> unterschiedliche länge, unterschiedliches JSON
Das mag zwar aus programmiertechnischer Sicht erstmal einfach sein, aber die Performance wird darunter ziemlich leiden, weshalb ich mir diesen Schritt sparen würde.

Der direkte Vergleich aller einzelnen Felder bringt ja auch schon ein eindeutiges Ergebnis. Beachten muss man nur, dass der Vergleich von "beiden Seiten" aus durchgeführt werden muss. Also einmal über die Felder von JSON_1 iterieren und das Vorhandensein + Gleichheit in JSON_2 sicherstellen und danach das selbe Spiel nochmal mit JSON_2 durchführen. Sonst könnte es ja sein, dass JSON_2 zwar die gleichen Felder wie JSON_1 besitzt, aber zusätzlich noch Weitere.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 06:49 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-2025 by Thomas Breitkreuz