Wahrscheinlich ist es eine Anfängerfrage. Ich habe ein JSON-Datenformat, das polymorphe Datensätze enthält, und ich muss es analysieren. Dies sind Eckpunkte oder Kanten eines GraphenAnalyse von JSON polymorphen Datensätzen mit Elm
{
"records": [{
"id": 0,
"object": {
"id": "vertex1"
}
}, {
"id": 1,
"object": {
"id": "vertex2"
}
}, {
"id": 2,
"object": {
"from": "vertex1",
"to": "vertex2"
}
}]
}
Wie Sie sehen können sie alle id
, aber Ecken und Kanten haben verschiedene Satzstrukturen.
Ich habe versucht, etwas auf dem Parsen solche Strukturen zu finden, aber das einzige, was ich war Handling records with shared substructure in Elm gefunden, aber ich kann die Antwort auf Elm 0,17 (eine einfache Umbenennung von data
zu type
nicht helfen)
Im Allgemeinen nicht übersetzen es gibt 2 Herausforderungen:
- eine polymorphe Datensatz
- decode JSON dynamisch in einen Scheitelpunkt oder einen Rand definieren
, wie weit ich bekam:
type alias RecordBase =
{ id : Int
}
type Records = List (Record RecordBase)
type Record o =
VertexRecord o
| EdgeRecord o
type alias VertexRecord o =
{ o | object : {
id : Int
}
}
type alias EdgeRecord o =
{ o | object : {
from : Int
, to : Int
}
}
aber der Compiler beschwert sich mit
mehrere Top-Level-Namenswerte
VertexRecord
macht die Dinge zweideutig.
Offenbar definiert union
bereits die VertexRecord
und EdgeRecord
Typen.
Ich weiß wirklich nicht, wie ich von hier fortfahren soll. Alle Vorschläge sind herzlich willkommen.
Wow! Es klappt! @ chad-gilbert du hast mir sehr geholfen! Ich würde es alleine nicht finden können. Danke vielmals! –