Spring til indhold
AI Ordbog

AI Ordbog

JSON mode

En indstilling der tvinger AI-modeller til at returnere gyldigt JSON i stedet for fritekst, uden at kræve et specifikt skema.

Kristian Primdal Skrevet og redigeret af Kristian Primdal · Sidst opdateret 18. marts 2026

Indhold

Hvad er JSON mode?

JSON mode er en indstilling i AI-modellers API der garanterer at modellens svar altid er syntaktisk gyldigt JSON. Når JSON mode er aktiveret, kan modellen ikke returnere fritekst, markdown eller andre formater. Kun JSON der kan parses af enhver JSON-parser.

Det løser et konkret og frustrerende problem: når man beder en AI-model om at svare i JSON via prompten, gør den det som regel. Men ikke altid. Nogle gange tilføjer modellen en indledende forklaring før JSON’en. Andre gange wrapper den JSON’en i en markdown-kodeblok. Eller den producerer JSON med en syntaksfejl: et manglende komma, en ekstra parentes. JSON mode eliminerer alle disse problemer ved at garantere gyldigt JSON på systemniveau.

JSON: Det korte overblik

JSON (JavaScript Object Notation) er det mest udbredte format til dataudveksling i software. Det er let at læse for mennesker og let at parse for maskiner:

{
  "navn": "Anna Jensen",
  "alder": 34,
  "aktiv": true,
  "interesser": ["AI", "fotografi", "løb"],
  "adresse": {
    "by": "København",
    "postnummer": "2100"
  }
}

JSON understøtter strenge, tal, booleans, arrays, objekter og null. Det er standarden for API-kommunikation, konfigurationsfiler og datalagring i moderne software.

Hvorfor er JSON mode nødvendigt?

Problemet uden JSON mode

Selv med en klar instruktion i prompten som “Svar kun i JSON-format” kan modellen producere:

Problem 1: Wrapper-tekst

Her er resultatet i JSON-format:

{"navn": "Anna", "alder": 34}

Jeg håber det hjælper!

Koden der forsøger at parse dette som JSON fejler, fordi teksten før og efter ikke er JSON.

Problem 2: Markdown-kodeblok

```json
{"navn": "Anna", "alder": 34}
```‎

JSON-parseren fejler på backticks og sprogannotation.

Problem 3: Ugyldigt JSON

{"navn": "Anna", "alder": 34,}

Det afsluttende komma efter 34 er ugyldigt JSON. Mange parsere afviser dette.

Problem 4: Blandet output

Baseret på teksten kan jeg se følgende:
- Navn: Anna
- Alder: 34

Eller i JSON: {"navn": "Anna", "alder": 34}

Løsningen med JSON mode

Med JSON mode aktiveret producerer modellen altid og kun gyldigt JSON:

{"navn": "Anna", "alder": 34}

Ingen wrapper-tekst, ingen markdown, ingen syntaksfejl. Outputtet kan parses direkte af JSON.parse() i JavaScript, json.loads() i Python eller enhver anden JSON-parser.

JSON mode vs. structured output

JSON mode og structured output løser relaterede men forskellige problemer:

JSON modeStructured output
GarantiOutputtet er gyldigt JSONOutputtet følger et specifikt JSON Schema
SkemaIntet skema krævetSkema defineret af brugeren
FelterModellen bestemmer felterFelter defineret i skemaet
DatatyperIkke håndhævetHåndhævet (string, integer, etc.)
Ekstra felterKan forekommeIkke tilladt (strict mode)
OpsætningSimpel: én parameterKræver JSON Schema-definition
Bedst tilPrototyping, fleksible opgaverProduktion, integrationer

JSON mode siger: “Giv mig gyldigt JSON.” Structured output siger: “Giv mig gyldigt JSON der følger præcis dette skema.”

Tænk på det som forskellen mellem at bede nogen om at skrive en liste (JSON mode) versus at bede dem udfylde en specifik formular (structured output). Begge giver struktur, men formularen giver garanti for præcis hvilke felter der er udfyldt.

Hvordan bruges JSON mode i praksis?

OpenAI

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "Ekstraher kontaktinfo fra teksten. Svar i JSON."},
        {"role": "user", "content": "Ring til Mikkel på 28456789"}
    ],
    response_format={"type": "json_object"}
)
# Garanteret gyldigt JSON
data = json.loads(response.choices[0].message.content)

Anthropic (Claude)

Anthropic tilbyder ikke en dedikeret JSON mode-parameter men opnår tilsvarende funktionalitet via systemprompt-instruktioner kombineret med prefill af assistentens svar med {, samt via tool use med structured output for skema-garanteret JSON.

Google (Gemini)

response = model.generate_content(
    "Ekstraher kontaktinfo fra: Ring til Mikkel på 28456789",
    generation_config={"response_mime_type": "application/json"}
)

Praktiske eksempler

Eksempel 1: Simpel dataekstraktion

Prompt: “Ekstraher alle datoer og begivenheder fra denne tekst: ‘Julefrokosten er den 12. december. Generalforsamlingen er 15. marts 2026. Sommerfesten planlægges til 21. juni.’”

Output med JSON mode:

{
  "begivenheder": [
    {"navn": "Julefrokost", "dato": "2025-12-12"},
    {"navn": "Generalforsamling", "dato": "2026-03-15"},
    {"navn": "Sommerfest", "dato": "2026-06-21"}
  ]
}

Modellen vælger selv strukturen. Der er intet skema der definerer felterne. Men outputtet er garanteret gyldigt JSON.

Eksempel 2: Sentiment-analyse

Prompt: “Analysér stemningen i disse kundeanmeldelser og returnér resultatet.”

Output:

{
  "anmeldelser": [
    {"tekst": "Fantastisk produkt!", "sentiment": "positiv", "score": 0.95},
    {"tekst": "Levering tog for lang tid", "sentiment": "negativ", "score": 0.3},
    {"tekst": "OK kvalitet til prisen", "sentiment": "neutral", "score": 0.55}
  ]
}

Eksempel 3: Opsummering med metadata

Prompt: “Opsummér denne artikel og returnér opsummering, nøglepunkter og emneord.”

Output:

{
  "opsummering": "Artiklen beskriver hvordan danske virksomheder kan komme i gang med AI...",
  "nøglepunkter": [
    "Start med ét konkret use case",
    "Involvér medarbejderne tidligt",
    "Mål effekten fra dag ét"
  ],
  "emneord": ["AI", "digital transformation", "Danmark", "SMV"],
  "estimeret_læsetid_minutter": 8
}

Eksempel 4: Batch-klassificering

Når man skal klassificere mange elementer på én gang, er JSON mode ideel:

Prompt: “Klassificér disse supporthenvendelser som ’teknisk’, ‘fakturering’ eller ‘generelt’.”

Output:

{
  "klassificeringer": [
    {"id": 1, "tekst": "Min login virker ikke", "kategori": "teknisk"},
    {"id": 2, "tekst": "Kan jeg få kopi af faktura?", "kategori": "fakturering"},
    {"id": 3, "tekst": "Hvornår har I åbent?", "kategori": "generelt"}
  ]
}

Hvornår bruge JSON mode vs. structured output

Brug JSON mode når:

  • Du prototyper og vil hurtigt få maskinlæsbart output uden at definere et skema
  • Strukturen er fleksibel. Du vil have JSON men den præcise struktur kan variere
  • Du behandler output manuelt. Et menneske inspicerer JSON’en før den bruges
  • Opgaven er eksplorativ. Du ved ikke præcis hvilke felter modellen vil returnere
  • Enkelhed er prioritet. Du vil undgå kompleksiteten af JSON Schema-definitioner

Brug structured output når:

  • Kode parser outputtet og afhænger af specifikke felter og datatyper
  • Pålidelighed er kritisk. Systemet fejler hvis et felt mangler eller har forkert type
  • Du bygger produktion. Downstream-systemer forventer en præcis struktur
  • Konsistens er vigtig. Alle outputs skal have nøjagtig samme format
  • Du bruger enums. Felter med begrænsede, foruddefinerede værdier

Progressionen i praksis

Mange udviklere følger en naturlig progression:

  1. Start med fritekst. Forstå hvad modellen kan levere
  2. Skift til JSON mode. Få maskinlæsbart output hurtigt
  3. Definer et skema med structured output. Lås formatet ned til produktion

JSON mode er ofte mellemtrinet mellem ustruktureret fritekst og fuldt skema-defineret structured output.

Begrænsninger

Ingen strukturgaranti

JSON mode garanterer at outputtet er gyldigt JSON, men ikke at det har den struktur du forventer. Modellen kan:

  • Returnere andre feltnavne end forventet (“name” i stedet for “navn”)
  • Udelade felter den anser for irrelevante
  • Tilføje felter du ikke bad om
  • Bruge andre datatyper (streng “34” i stedet for tallet 34)

Hvis du har brug for garanteret struktur, brug structured output.

Promptafhængighed

Uden et skema afhænger strukturen af din prompt. Vage prompts giver inkonsistente strukturer. For pålideligt output med JSON mode er det vigtigt at beskrive den ønskede struktur præcist i prompten. Gerne med et eksempel.

Ingen nested validation

JSON mode validerer kun at outputtet er syntaktisk gyldigt JSON. Det validerer ikke nesting-dybde, array-længder, strengformater eller andre semantiske krav. For den type validering kræves structured output eller post-processing validering.

Systemprompt-krav

De fleste udbydere kræver at prompten indeholder ordet “JSON” når JSON mode er aktiveret. Hvis prompten ikke nævner JSON, kan API’en returnere en fejl eller ignorere indstillingen.

Tips til bedre JSON mode-resultater

Giv et eksempel: Inkludér et eksempel på den ønskede JSON-struktur i prompten. Modellen er meget bedre til at matche et konkret eksempel end at fortolke en abstrakt beskrivelse.

Specificér feltnavne: Nævn eksplicit hvilke felter du ønsker. “Returnér JSON med felterne navn, alder og by” giver mere konsistente resultater end “Returnér personens information som JSON.”

Angiv datatyper: “alder skal være et heltal, ikke en streng” hjælper modellen med at vælge den rigtige type.

Brug konsistente navne: Vælg enten dansk eller engelsk for feltnavne og hold dig til det. Blandede navne som {"name": "Anna", "alder": 34} er forvirrende.

Test edge cases: Hvad returnerer modellen når information mangler i inputtet? Returnerer den null, en tom streng, eller udelader den feltet helt? Test det og håndtér det i din kode.

Ofte stillede spørgsmål

Hvad er JSON mode?

JSON mode er en indstilling i AI-modellers API der garanterer at modellens output altid er syntaktisk gyldigt JSON. Uden JSON mode kan modellen tilføje forklarende tekst, markdown-formatering eller producere JSON med syntaksfejl. Selv når prompten beder om JSON. Med JSON mode aktiveret returnerer modellen altid og kun parserbart JSON. Det er nødvendigt for at integrere AI-modeller pålideligt i software-systemer der skal parse modellens output maskinelt.

Hvad er forskellen på JSON mode og structured output?

JSON mode garanterer at outputtet er gyldigt JSON men stiller ingen krav til indholdet. Felter, datatyper og struktur bestemmes af modellen baseret på prompten. Structured output går videre og garanterer at outputtet følger et specifikt JSON Schema med definerede felter, datatyper og struktur. JSON mode er som at sige “skriv en liste”. Structured output er som at sige “udfyld denne formular”. For produktion er structured output typisk det rigtige valg, mens JSON mode er ideel til prototyping og fleksible opgaver.

Hvornår bør jeg bruge JSON mode?

Brug JSON mode når du vil have maskinlæsbart output uden at definere et formelt skema. Det er ideelt til prototyping, eksplorative opgaver, batch-klassificering med fleksibel struktur, og scenarier hvor et menneske inspicerer outputtet før det bruges. Hvis din kode afhænger af specifikke felter og datatyper, bør du i stedet bruge structured output der giver strengere garantier.

Understøtter alle AI-modeller JSON mode?

De fleste store AI-udbydere tilbyder JSON mode: OpenAI via response_format: {"type": "json_object"}, Google Gemini via response_mime_type: "application/json", og Anthropic via tool use og prompt-teknikker. Open source-modeller kan bruge JSON mode via inference-frameworks som vLLM, llama.cpp og Ollama der implementerer constrained decoding. Implementeringen varierer mellem udbydere, men grundprincippet (garanteret gyldigt JSON-output) er det samme.


Relaterede termer