AGB  ·  Datenschutz  ·  Impressum  







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

LkJSON 2. "Datensatz" lesen

Ein Thema von DelTurbo · begonnen am 16. Apr 2017 · letzter Beitrag vom 7. Aug 2017
Antwort Antwort
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#1

LkJSON 2. "Datensatz" lesen

  Alt 16. Apr 2017, 15:28
Hallo,
ich habe folgende Daten (nur ein ausschnitt der ersten beiden)
Code:
{
      "id":"0.0.127.in-addr.arpa.",
      "url":"/servers/localhost/zones/0.0.127.in-addr.arpa.",
      "name":"0.0.127.in-addr.arpa",
      "kind":"Master",
      "dnssec":false,
      "masters":[

      ],
      "serial":00000,
      "notified_serial":000000,
      "last_check":0
   },
   {
      "id":"0000.in-addr.arpa.",
      "url":"/servers/localhost/zones/0000.in-addr.arpa.",
      "name":"0000.in-addr.arpa",
      "kind":"Master",
      "dnssec":false,
      "masters":[

      ],
      "serial":00000,
      "notified_serial":0000,
      "last_check":0
   }, usw...
Ich kann die id,url usw. vom 1. Datensatz auslesen. Aber ich finde nicht heraus wie ich an die nächsten "Datensätze" komme. Wäre toll wenn mir da jemand, eventuell mit einem 3-Zeiler, helfen könnte. Ich nutze LkJSON v1.07. Dort sind zwar 5 Samples bei, aber leider nichts was mir helfen würde.

Vielen dank im Voraus

EDIT: Wenn ich du wenig angaben gemacht habe, einfach fragen. Vielen Dank.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo (17. Apr 2017 um 12:57 Uhr) Grund: Als Offene Frage gekennzeichnet
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#2

AW: LkJSON 2. "Datensatz" lesen

  Alt 17. Apr 2017, 12:57
Damit sich keiner die mühe macht und sucht. Ich habe etwas gefunden. Mein JSON sieht nun so aus.
Code:
[{
      "id":"0.0.127.in-addr.arpa.",
      "url":"/servers/localhost/zones/0.0.127.in-addr.arpa.",
      "name":"0.0.127.in-addr.arpa",
      "kind":"Master",
      "dnssec":false,
      "masters":[

      ],
      "serial":32513,
      "notified_serial":000000,
      "last_check":0
   },
   {
      "id":"0000.in-addr.arpa.",
      "url":"/servers/localhost/zones/0000.in-addr.arpa.",
      "name":"0000.in-addr.arpa",
      "kind":"Master",
      "dnssec":false,
      "masters":[

      ],
      "serial":32513,
      "notified_serial":0000,
      "last_check":0
   }]
Neu sind die [] am Anfang und ende. Dann kann ich das mit diesem Programm auslesen.
Delphi-Quellcode:
program sample6;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows,
  classes,
  Variants,
  uLkJSON in 'uLkJSON.pas';

var
  Messages :TlkJSONbase;
  i :Integer;
begin
    messages:=TlkJSONstreamed.loadfromfile('test1.txt') as TlkJSONbase;
    for I := 0 to messages.Count-1 do begin
        WriteLn(VarToStr(messages.Child[I].Field['url'].Value));
    end;
    readln;
end.
Gefunden habe ich das hier.
Ich kam am anfang mit dem Child nicht klar.

Trotzdem danke an alle und noch einen schönen Ostermontag. Meiner ist gerettet
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: LkJSON 2. "Datensatz" lesen

  Alt 18. Apr 2017, 14:17
Moin,
Wollte nochmal kurz was zum Abschluss sagen, da ich gerade erst auf diesen Thread aufmerksam geworden bin.

Ein JSON-Document darf nur ein Root haben. Du hast aber auf der ersten Ebene mehrere Objekte, ergo musst du(wie du es bereits selbst richtig korrigiert hast) daraus eine Array-Deklaration machen "[...]". Desweiteren sind einige deiner Numerischen Werte nicht strikt Json-kompatibel. Die Zahlen dürfen afaik keine führenden Nullen haben. Deine Serials aber haben 00000, stehen dürfte da aber nur 0. Oder wenn du die Zeichenkette so brauchst, musst du es als String hinschreiben.

Folgende JSon-Validatoren kann ich zu Analyse- und validierungszwecken empfehlen:
https://jsonformatter.curiousconcept.com/
http://jsonlint.com/

Grüße
Memnarh
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#4

AW: LkJSON 2. "Datensatz" lesen

  Alt 18. Apr 2017, 14:28
Danke für den Hinweis. Die Nullen habe ich nur rein geschrieben um nicht alle Daten ins Internet zu stellen.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: LkJSON 2. "Datensatz" lesen

  Alt 6. Aug 2017, 22:28
Hi zusammen.

Da ich recht neu im Umgang mit JSON bin, bin ich hier auf lkJSON gestossen.

Gibt es hierfür irgendwo ein paar Demozeilen, die den Umgang hiermit besser erläutern? Habe mit den Demos1-5 angefangen, leider ist es nicht sehr selbsterklärend.

Bei den Demozeilen oben
Code:
WriteLn(VarToStr(js.Child[I].Field['customerName'].Value));
ist mir aufgefallen, dass die Childs genau bekannt sein müssen, sonst schmeisst es Zugriffsverletzungen aus. Muss ich jeden Zugriff auf Fields mit try..except abfangen, oder kann man das in der lkJSON.pas aktivieren?

Danke für Infos
Michael
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: LkJSON 2. "Datensatz" lesen

  Alt 6. Aug 2017, 22:47
Ich rate mal:
Delphi-Quellcode:
if Assigned(js.Child[I].Field['customerName']) then begin
  WriteLn(VarToStr(js.Child[I].Field['customerName'].Value));
end;
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#7

AW: LkJSON 2. "Datensatz" lesen

  Alt 7. Aug 2017, 08:58
Hi,
ich habe es mit try..except gelöst.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: LkJSON 2. "Datensatz" lesen

  Alt 7. Aug 2017, 10:28
Ich habe es mit Assigned probiert und es funktioniert (hätte man eigentlich selbst drauf kommen können )

Danke erstmal
Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: LkJSON 2. "Datensatz" lesen

  Alt 7. Aug 2017, 11:24
In diesem Fall war das Stichwort "Zugriffsverletzung bei Adresse 000000xx" -> nil.

Und bei Konsolenanwendungen kann ein Try ... Except WriteLn(E.ClassName, ': ', E.Message); ExitCode := 1; nicht schaden.


Hi,
ich habe es mit try..except gelöst.
Ich möchte den Entwickler immer gern erwürgen, vierteilen und dann steinigen, wenn ich solche Code debuggen muß, wo ständig "sinnlos" der Debugger anspricht und mich stört.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 7. Aug 2017 um 11:27 Uhr)
  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 03:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz