JSON-export – Schemabeskrivning
Detta dokument beskriver strukturen på den JSON-fil som produceras av Exportera till JSON i Mängdningsverktyget.
Toppnivå
{
"schemaVersion": "1",
"exportedAt": "2026-03-18T10:00:00Z",
"tenantName": "Byggfirman AB",
"projectName": "Storgatan 1",
"projectAttributes": {
"Kundnummer": "545454545"
},
"subProjectName": "Lägenhet 1A",
"materialQuantities": [...],
"elements": [...],
"recipes": [...]
}
| Fält | Typ | Beskrivning |
|---|---|---|
schemaVersion | string | Schemaversion. Alltid "1" tills vidare. |
exportedAt | string | ISO 8601 UTC-tidsstämpel för exporten. |
tenantName | string | Organisationens (tenantens) namn. |
projectName | string | Projektnamn. |
projectAttributes | object | Egna attribut som kunden lagt till för projektet, t.ex. kundnummer. Saknas om inga anpassade attribut har skapats. Se Projektattribut. |
subProjectName | string | Delprojektnamn (t.ex. en specifik lägenhet eller våning). |
materialQuantities | array | Aggregerade materialmängder för hela delprojektet. Se Materialmängder. |
elements | array | Alla beräknade element med ingrediensuppdelning. Se Element. |
recipes | array | Alla recept som används, med aggregerade ingrediensmängder. Se Recept. |
Materialmängder
materialQuantities innehåller total uträknad mängd per unikt material och specifikation. Detta objekt innehåller alltså den totala mängden av alla material som räknats ut.
Varje material innehåller också en referens till elementet som använder materialet, som genereras på nytt i varje export, och är till för att kunna enkelt matcha material emot element.
{
"categoryCode": "KAKEL",
"categoryName": "Kakel",
"materialCode": "VIT",
"materialName": "Kakel Vit",
"specificationCode": "60X60",
"specificationName": "60×60 cm",
"combinedCode": "KAKEL-VIT-60X60",
"quantity": { ... },
"elementRefs": ["EL321", "EL999"]
}
| Fält | Beskrivning |
|---|---|
categoryCode | Kod för materialkategorin. |
categoryName | Namn på materialkategorin. |
materialCode | Kod för materialet. |
materialName | Namn på materialet. |
specificationCode | Kod för materialspecifikationen |
specificationName | Namn på materialspecifikationen |
combinedCode | Kategori-, material- och specifikationskoder sammanfogade med -. Exempel: "KAKEL-VIT-60X60". |
quantity | Total beräknad mängd (inklusive spill). Se Mängd. |
elementRefs | Referenser till de element som bidrar till mängden. Matchar ref i elements-arrayen. |
Element
Varje objekt i elements representerar ett beräknat element, t.ex. ett rum eller en yta. Varje element har en unik ref som genereras vid exporten – den används för att koppla ihop materialmängder och recept med rätt element.
{
"ref": "EL321",
"name": "Sovrum",
"elementCategory": "Golv",
"attributes": [
{
"name": "Area",
"displayValue": "12.5 m²",
"valueNumber": 12.5,
"unit": "m²",
"unitCategory": "area",
"attributeType": "UNIT"
}
],
"recipeRefs": ["REC123"],
"recipes": [
{
"ref": "REC123",
"name": "Standardgolv",
"layers": [ ... ]
}
]
}
| Fält | Beskrivning |
|---|---|
ref | Referens inom exportfilen (t.ex. "EL321"). Används av materialQuantities[].elementRefs och recipes[].elementRefs. |
name | Elementnamn. |
elementCategory | Elementkategorinamn (t.ex. "Golv", "Vägg"). |
attributes | Uppmätta eller inmatade attributvärden. Se Elementattribut. |
recipeRefs | Referenser till använda recept. Matchar ref i recipes-arrayen. |
recipes | Per-element ingrediensuppdelning för varje recept. Se ElementRecept. |
ElementRecept
{
"ref": "REC123",
"name": "Standardgolv",
"layers": [
{
"name": "Lager 1",
"ingredients": [ ... ]
}
]
}
| Fält | Beskrivning |
|---|---|
ref | Referens till receptet. Matchar ref i toppnivåns recipes-array. |
name | Receptnamn. |
layers | Lager med ingredienser. Se Lager. |
Recept
recipes innehåller en post per unikt recept som används i delprojektet. Mängder är aggregerade över alla element som använder receptet.
{
"ref": "REC123",
"name": "Standardgolv",
"elementCategory": "Golv",
"elementRefs": ["EL321", "EL999"],
"layers": [ ... ]
}
| Fält | Beskrivning |
|---|---|
ref | Referens inom exportfilen. |
name | Receptnamn. |
elementCategory | Elementkategori som receptet tillhör. |
elementRefs | Referenser till alla element som använder receptet. |
layers | Lager med aggregerade ingrediensmängder. Se Lager. |
Lager
Ett lager grupperar ingredienser inom ett recept.
{
"name": "Lager 1",
"ingredients": [ ... ]
}
| Fält | Beskrivning |
|---|---|
name | Lagernamn. |
ingredients | Ingredienser i lagret. Se Ingrediens. |
Ingrediens
En ingrediens är ett byggmaterial som används i ett recepts lager.
{
"name": "Kakel",
"categoryCode": "KAKEL",
"categoryName": "Kakel",
"materialCode": "VIT",
"materialName": "Kakel Vit",
"specificationCode": "60X60",
"specificationName": "60×60 cm",
"combinedCode": "KAKEL-VIT-60X60",
"wasteFactor": 1.1,
"isExcludedFromCalculation": true,
"quantity": { ... }
}
| Fält | Beskrivning |
|---|---|
name | Ingrediensnamn (från receptdefinitionen). |
categoryCode | Kod för materialkategorin. |
categoryName | Namn på materialkategorin. |
materialCode | Kod för materialet. |
materialName | Namn på materialet. |
specificationCode | Kod för materialspecifikationen. |
specificationName | Namn på materialspecifikationen. |
combinedCode | Kategori-, material- och specifikationskoder sammanfogade med -. |
wasteFactor | Spill/förlustfaktor (t.ex. 1.1 = 10% spill). |
isExcludedFromCalculation | true om ingrediensen är exkluderad från totalsumman. |
quantity | Beräknad mängd. Se Mängd. |
Elementattribut
Attributvärden uppmätta eller inmatade för ett element (t.ex. area, längd).
{
"name": "Area",
"displayValue": "12.5 m²",
"valueNumber": 12.5,
"unit": "m²",
"unitCategory": "area",
"attributeType": "UNIT"
}
| Fält | Beskrivning |
|---|---|
name | Attributnamn. |
displayValue | Värdet som text, t.ex. "12.5 m²". |
valueNumber | Värdet som ett tal. |
unit | Enhetssymbol, t.ex. "m²", "st". |
unitCategory | Enhetskategori, t.ex. "area", "length". |
attributeType | En av "UNIT", "NUMBER", "TEXT", "BOOLEAN". |
Mängd
Mängdobjekt är hur vi representerar ett värde, dess enhet, och dess kategori
{
"displayValue": "38.5 m²",
"valueNumber": 38.5,
"unit": "m²",
"unitCategory": "area",
"attributeType": "UNIT",
"constructionMaterialSpecWidthMM": 600,
"constructionMaterialSpecDepthMM": 600
}
| Fält | Beskrivning |
|---|---|
displayValue | Värdet som text, t.ex. "38.5 m²". |
valueNumber | Värdet som ett tal. |
valueBool | Sant/falskt-värde. |
valueString | Textvärde. |
unit | Enhetssymbol, t.ex. "m²", "pcs", "kg". |
unitCategory | Enhetskategori, t.ex. "area", "length", "weight". |
attributeType | En av "UNIT", "NUMBER", "TEXT", "BOOLEAN". |
constructionMaterialSpecWidthMM | Bredden på materialets specifikation i mm. Används t.ex. för att räkna om m² till löpmeter. |
constructionMaterialSpecDepthMM | Tjockleken/höjden på materialets specifikation i mm. |
Materialkodsystem
combinedCode är ett hjälpfält: koder sammanfogas med - i ordningen Kategori → Material → Specifikation.
| Exempel | combinedCode |
|---|---|
Kategori KAKEL, Material VIT, Spec 60X60 | KAKEL-VIT-60X60 |
Kategori KAKEL, Material VIT, ingen spec | KAKEL-VIT |
Projektattribut
Projektattribut är anpassade fält som kunden själv har skapat under Inställningar → Attribut → Projektattribut. När ett attribut lagts till där syns det som ett ifyllbart fält på projektet.
Detta är ingenting som finns som standard – det kräver att någon aktivt skapat attribut för just detta projekt. Om fälten har skapats, och fyllts i på projektet, så inkluderas de här. Annars utelämnas projectAttributes helt.
"projectAttributes": {
"Kundnummer": "545454545",
"Avtalsreferens": "AVT-2026-001"
}