> ## Documentation Index
> Fetch the complete documentation index at: https://docs.galtea.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# JSON Field Match

> Compares JSON objects field by field, checking whether all fields in the expected output exist in the actual output with matching values. Returns the fraction of expected fields that match.

The JSON Field Match metric is one of the [Deterministic Metric](/concepts/metric) options in Galtea. It performs a field-level comparison between two JSON objects, giving a more granular and interpretable score than text-based matching when the expected output is structured JSON.

<Tip>If your use case involves entity extraction where accents or capitalization may vary (e.g., "Sí" vs "SI"), consider [JSON Field Match (Normalized)](/concepts/metric/json-field-match-normalized) instead.</Tip>

## Evaluation Parameters

To compute the `JSON Field Match` metric, the following parameters are required:

* **`actual_output`**: The JSON output generated by the model (string or object). Supports lenient parsing — JSON wrapped in markdown code fences or embedded in surrounding text is automatically extracted.
* **`expected_output`**: The reference JSON object to compare against. Must be a valid JSON object.

## How Is It Calculated?

The metric compares top-level fields between the expected and actual JSON outputs:

1. **Parse Inputs**
   `expected_output` is parsed as a strict JSON object. `actual_output` is parsed leniently — the metric will attempt to extract a JSON object from markdown code fences (e.g., ` ```json ... ``` `) or surrounding text before parsing. If either cannot be resolved to a valid JSON object, the evaluation raises an error.

2. **Compare Fields**
   For each top-level key in the expected output, check whether the same key exists in the actual output with an equal value. Comparison uses strict equality — type mismatches (e.g., string `"30"` vs number `30`) count as non-matching. Nested objects are compared by deep equality.

3. **Compute Score**
   The score is calculated as:

   ```
   score = 1 - (non_matching_fields / total_fields)
   ```

   Where `total_fields` is the number of top-level keys in the expected output, and `non_matching_fields` is the count of keys that are missing or have different values in the actual output.

## Interpretation of Scores

* **1.0** — All expected fields are present in the actual output with matching values. Also returned when the expected output is an empty JSON object `{}`.
* **0.5** — Half of the expected fields match.
* **0.0** — No fields match.

Extra keys in the actual output that are not in the expected output are ignored. Missing keys in the actual output count as non-matching.

## Suggested Test Case Types

Use JSON Field Match when evaluating:

* **Structured extraction tasks** where the model outputs a JSON document with specific fields.
* **Form-filling or slot-filling agents** where each field must match independently.
* **API response validation** where the expected output is a known JSON structure.
* **Golden dataset evaluations** where partial credit is useful (e.g., 3 out of 4 fields correct).
