Schaffung einer Struktur mit json aus einer Liste/Tabelle
Sagen wir, ich habe die Tabelle/Liste wie diese n=3 in diesem Fall, aber n kann, wie unbegrenzt.
groupid answerid1 answerid2 answerid(n)
1 3 6 8
1 3 6 9
1 4 7
2 5
und ich möchte eine Eltern/Kind-Baum-json-Ausgabe wie diese mit Hilfe von java.(Ich habe mit GSON)
{
data: [
{
groupid: 1,
children: [
{
answerid1: 1,
children: [
{
answerid2:3,
children: [
{
answerid3:6,
children: [
{answerid4: 8},
{answerid4: 9}
]
}
}, {
answerid2: 4,
children: [
{answerid3:7}
]
}
]
},
{
groupid1: 2,
children: [
{ answerid2: 5}
]
}
]
}
was wäre der code/Schritte zu tun. ich schaute durch die Menge der tags, sondern vor allem die Menschen drucken die Ausgabe und nicht rekursiv bauen eine hashmap/ArrayList für GSON zum analysieren und schreiben von API. ein weiterer Punkt jede id noch andere Daten mit ihm verbunden sind, einbezogen werden in die json-Ausgabe. zum Beispiel anstelle von {groupid:1} müsste diese {Gruppen-id:1, text=toyota}.
jede Hilfe wird sehr geschätzt, wie ich bin ziemlich neu in java, ich komme aus SAS-hintergrund.
Bekomme ich Daten wie diese (nur eine matrix-Liste)
Toyota, Gas, Compact, Corolla
- Toyota, Gas, Kompakt, Camry
- Toyota, Hybrid, Compact, Prius
- Honda, Gas, Kompakt, Civic
- Bei Bedarf kann ich neu FORMATIEREN, DIE DATEN in zwei Tabellen
parentId parText answerId
- 1 Toyota 1
- 1 Toyota 2
- 1 Toyota 3
- 2 Honda 4
- answerId Ebene answerTextid answerText
- 1 1 1 Gas
- 1 2 2 Compact
- 1 3 3 Corolla
- 2 1 1 Gas
- 2 2 2 Compact
- 2 3 4 Camry
- ...Dann muss ich es machen, einen Baum(verschachtelte Ausgabe wie die JSON-shows mit Eltern/Kinder - genauso wie wenn Sie waren creatign eine Datei-system-Verzeichnis)
einer anderen thign ich gerne tun würde, ist für jedes Auto die Laufleistung als varialbe ({answerid3:4, text=Corolla, Laufleistung=38}. aber auch wenn ich in der traverse den Baum geben eine Durchschnittliche Meile für die Branche. Wie sagen Sie bei der Abteilung von Toyota -, Gas -, Kompakt-mit der Laufleistung wäre avg(Camry, Corolla)
die Ausgabe ist ein wenig off, ich bin auf der Suche nach so etwas wie dieses. wenn keine Kinder dann keine Kinder arraylist und attrbutes sind ein Teil von einem Objekt (hashmap)
{"data":[{"id":1,"children": [{"id": 2,"children": [{"id": 3 ,"children": [{"id": 4,"name":"Prius"}],"name":"Compact"}],"name":"Hybrid"}, {"id":5,"children": [{"id":3,"children": [{"id":7,"MPG":38, "name":"Corolla"}, {"id":8,"MPG":28,"name":"Camry"}],"name":"Compact"}],"name":"Gas"}],"name":"Toyota"}, {"id":9, "children": [{"id":10,"children": [{"id":3 ,"children": [{"id":11 ,"name":"Civic"}],"name":"Compact"}],"name":"Gas"}],"name":"Honda"}]}
InformationsquelleAutor Bob Stein | 2012-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie die Klassen für die Modellierung Ihrer Daten, in der Struktur, die Sie benötigen. Sie sind im Grunde bauen zu wollen, eine hierarchische Struktur von einige Zeilen-basierte Daten, ist dies eher wie ein XML-Dokument, das möglicherweise eine geeignete Lösung. Aber Sie hat mich süchtig, so spielte ich etwa mit dem, was ich vor hatte, und kam mit dieser:
Ich denke, das erfüllt die meisten der Anforderungen, die Sie erwähnt haben, so weit, obwohl ich Links aus der Mittelung der MPG Werte als übung für den reader (ich habe nur so viel Zeit...). Diese Lösung ist sehr allgemein gehalten - Sie möchten möglicherweise mehr konkrete sub-Klassen, die besser beschreiben, Ihre Daten-Modell (wie Hersteller, Typ, Modell), als Sie dann in der Lage sein zu hängen weitere nützliche Methoden aus Ihnen (wie der Berechnung von Durchschnittswerten von Feldern in der child-Objekte)
und würden Sie nicht haben, um mit den Eigenschaften als eine Sammlung von
Object
s, aber du bekommst dann mehr komplizierten code Initialisierung Ihrer Daten-Struktur aus der Liste. Hinweis - dieses ist nicht die Produktion bereit code, ich habe das nur als ein Beispiel, wie Sie gehen könnte, über die Modellierung Ihrer Daten in Java.Wenn Sie neu sind nicht nur Java, sondern Objekt-Orientierte Programmierung, dann sollten Sie Lesen, auf das Thema. Der code, den ich hier geschrieben habe ist nicht perfekt, ich kann schon sehen, wie es verbessert werden könnte. Schreiben lernen-gute Qualität Objekt-orientierten code braucht Zeit und übung. Lesen Sie auf Design Patterns und Code Smells .
auf deinem obigen code fügen Sie zu jeder Antwort array, Liste, aber, wie Sie die Schleife durch die erste "Liste", um die gewünschte Ausgabe erhalten? dies ist, wie ich es getan, in denen die Werte der "Spiegel" aus jeder Zeile HashMap map = new HashMap (); for (int i = 0; i < - Liste.size(); i++){ HashMap Punkt = (HashMap) Liste.get(i); int levId = (Integer)Position.get("levels"); for (int LV = 0; LV < levId ; lev++) {
Ich habe aktualisiert das Beispiel um dir zu zeigen was ich meine, durch eine abstrakte super-Klasse. Ich denke, was ich mir hier noch fehlt ist ein Verständnis dafür, wie Ihre Daten kommt und wie es strukturiert ist. Die Sie eingeben, erscheint eine Liste der Gruppen, die enthalten eine Liste von Antworten (single-level - Nur eine Liste von Listen, sondern in Ihrer Ausgabe JSON-Sie haben eine Gruppe mit geschachtelten Ebenen von Antworten in Antworten, und ich kann nicht ganz sehen, wie Sie wollen, um in form einer zur anderen. Wenn Sie mehr detail bitte aktualisieren Sie Ihre ursprüngliche Frage.
ich aktualisiert, einige weitere details zu dem problem
tausend Dank für die Hilfe für die objektorientierte link. meine expericne ist meist VB (VBA), SAS, SQL-Programmierung. wenn Sie jemals brauchen jede Statistik/Mathematik, SAS, SQkl helfen, hit me up ich bin froh, wieder die Gunst.
InformationsquelleAutor Malcolm Smith