Seite 1 von 2

Fragen zu den JSON strings

Verfasst: 26. Dez 2010 16:19
von aiQon
hey,
ich hab alles fertig bis auf die MS geschichten, meine Fragen:
1) ist die reihenfolge der key/value pairs relevant? konkretes beispiel: folie 34. kann statt key: value, neighbours: values auch stehen neighbours: values, key:value?
2) wenn ich meine neighbors liste und mehrfacheinträge in meinen finger tables habe, kann ich die mehrfacheinträge einfach in den JSON string klatschen oder soll ich die erst unique machen?

Cheers, stas

Re: Fragen zu den JSON strings

Verfasst: 27. Dez 2010 10:47
von BadTaste
Hi,

zu 1) Nein, verwendet bitte das Format, wie in den Folien angegeben.

zu 2) Doppelte Einträge bitte rauswerfen.

Re: Fragen zu den JSON strings

Verfasst: 27. Dez 2010 14:38
von aiQon
1) mit einrückungen? (frage nach dem sinn)

Re: Fragen zu den JSON strings

Verfasst: 27. Dez 2010 14:43
von BadTaste
Die Einrückungen müssen natürlich nicht aus den Folien übernommen werden.
Hierbei ist nur wichtig, dass die Strings korrekt vom MS interpretiert werden können, es sich also um Standard-konformes JSON handelt.
Ist dies nicht gegeben, gibt der MS eine Fehlermeldung aus.

Re: Fragen zu den JSON strings

Verfasst: 27. Dez 2010 14:53
von aiQon
das ist doch zum *** :<

geht sowas nicht:
{"neighbors": ["fef311b06", "1bf1695e80", "29029f88ad", "45741be1c4", "92192e52f9", "cc96effd79"], "key": "3f3aed300"}

ich krieg ums verrecken in python 2.6 keine ordnung in die json ausgabe...

Re: Fragen zu den JSON strings

Verfasst: 27. Dez 2010 16:02
von z.z.
Das Problem ist, dass Java im Gegensatz zu dynamisch typisierten Sprachen wie Python, JavaScript oder PHP eine feste Struktur für das JSON braucht. Dies widerspricht zwar der Idee von JSON, wir haben uns aber dennoch für JSON entschieden weil es ein einfaches schlankes Format ist.

Wir verwenden die Bibliothek GSON, in der man wie bereits erwähnt eine Struktur des erwarteten JSON-Strings angeben muss. Wenn hier jemand eine bessere Bibliothek kennt wären wir natürlich dankbar über einen Tipp.

Zu deinem speziellen Problem: Der Pyhon JSON Encoder hat eine Option sort_keys über die gesteuert werden kann ob die Keys sortiert werden sollen, oder nicht. Da du aber wahrscheinlich ein Dictionary verwendest wird dir das nicht helfen, da Dictionarys Hash-Tabellen sind und die Keys nicht sortiert sind. Die pragmatische Lösung wäre also den JSON-String "von hand" zusammenzusetzen.

Re: Fragen zu den JSON strings

Verfasst: 7. Jan 2011 14:46
von VMann
Ich bin mir nicht so ganz sicher, ob ich die Formatvorgaben richtig verstanden habe.

1) ist der Wert nach "Key" die eigene Adresse?
2) wird so eine Adresse zusammengesetzt aus der Hex-Darstellung von IP+Port+ChordID?
3) gibt es einen Unterschied zwischen MS_Neighbors und MS_CHORD_ROUTING_TABLE, ausser das beim zweiten predecessor und successor explizit ausgewiesen werden? (und wieso wird hier ein Plural verwendet?)


Und gibt es irgendwo eine Dokumentation zur gson library? Ich bin mir nicht so sicher, was genau die gson methoden machen, insbesondere wenn es ums konvertieren in einen json-string geht.

Re: Fragen zu den JSON strings

Verfasst: 7. Jan 2011 14:55
von BadTaste
Hi,

1) key ist der eigene Identifier in Hex-Repräsentation (nicht die Adresse).
2) Wie gesagt, Hex-Repräsentation des Identifiers.
3) Wie du richtig sagst, werden bei MS_CHORD_ROUTING_TABLE successor(s) und predecessor(s) explizit angegeben.
Plural wurde hier verwendet (genauso wie ein JSON-Array), weil wir zunächst überlegt hatten mehrere successors / predecessors speichern zu lassen und Replikate der gespeicherten Daten abzulegen. Zur Vereinfachung haben wir uns aber dagegen entschieden.

Re: Fragen zu den JSON strings

Verfasst: 9. Jan 2011 15:35
von sge
Hi,
ich habe auch noch mal eine Frage zu dem MS_CHORD_ROUTING_TABLE-Reply.
Sollen bei dieser Nachricht bei den Fingern auch -- wie bei den neighbors der MS_NEIGHBORS-Message -- die doppelten Einträge entfernt werden, oder erwartet ihr dort die vollständige Fingertable?

Re: Fragen zu den JSON strings

Verfasst: 9. Jan 2011 15:44
von BadTaste
Wir erwarten die vollständige Finger Table, d.h. dass sicherlich auch doppelte Einträge vorkommen werden.

Re: Fragen zu den JSON strings

Verfasst: 10. Jan 2011 13:19
von Thorsten Peter
Hmmm, in unserer FingerTable werden Duplikate automatisch rausgeworfen (Datenstruktur Set).... Müssen wir das jetzt nochmal ändern?

Re: Fragen zu den JSON strings

Verfasst: 10. Jan 2011 13:30
von BadTaste
ja :(

Re: Fragen zu den JSON strings

Verfasst: 11. Jan 2011 13:44
von Zahnmeister
Also nochmal um sicher zu gehen, dass wir das mit den JSON-Strings auch richtig verstanden haben:

MS_NEIGHBORS:
- beinhaltet alle successors aus der finger table (ohne Duplikate), sowie zusätzlich den predecessor.
- Wobei von diesen "Nachbarn" die identifier in das JSON-Array geschrieben werden.
- Die Reihenfolge der identifier im JSON-Array ist egal.

MS_CHORD_ROUTING_TABLE:
- Alle finger (auch Duplikate und der direkte successor) werden dort (unter "fingers") angegeben.
- Die Reihenfolge dieser finger-identifier im JSON-Array ist relevant.
- Der predecessor wird extra angegeben.
- Der successor wird nochmal extra angegeben (wobei dieser schon min. einmal in den fingern vorkommt).

MS_PROVIDED_VALUES:
- Alle bereitgestellten values werden angegeben.
- Die Reihenfolge der value-identifier im JSON-Array ist egal.

MS_DOWNLOADED_VALUES:
- Alle jemals heruntergeladenen Files werden samt chunks angegeben.
- Die Anordnung der files ist egal.
- Die Anordnung der chunk-identifier im JSON-Array ist egal.

Generell gilt, dass die Reihenfolge der Elemente im JSON-String auf erster Ebene einzuhalten ist. (Anordnung wie in den Beispielen auf den Folien)


Ist das so korrekt?

Re: Fragen zu den JSON strings

Verfasst: 11. Jan 2011 14:16
von BadTaste
Ja, bitte nur bedenken, dass die Reihenfolge der Finger ebenfalls relevant ist.

Re: Fragen zu den JSON strings

Verfasst: 15. Jan 2011 14:59
von Thorsten Peter
Hiho,

hier doch noch zwei kleine Fragen zu den MS_DOWNLOADED_VALUES replies:
1. Zählen FileDescriptors auch zu "List the identifiers of all values ever downloaded for each downloaded file"
2. Wenn ich für einen value/chunk/Filedescriptor selbst verantwortlich bin und ihn nicht runterladen muss, soll dieser dann trotzdem unter MS_DOWNLOADED_VALUES gelistet werden? In diesem Fall müsste man quasi nur die Dateinamen kennen, die ich runterladen sollte (und sonst quasi gar nicht am Chord-Netz teilnehmen), um richtige Antworten auf MS_DOWNLOADED_VALUES liefern, richtig?

Vielen Dank im voraus und viele Grüße