useSortedKeys (JSON)
Summary
Section titled “Summary”- Rule available since:
v1.9.0 - Diagnostic Category:
assist/source/useSortedKeys - Sources:
- Same as
json/sort-keys
- Same as
How to enable in your editor
Section titled “How to enable in your editor”{ "editor.codeActionsOnSave": { "source.action.useSortedKeys.biome": "explicit", "source.fixAll.biome": "explicit" }}{ "code_actions_on_format": { "source.action.useSortedKeys.biome": true, "source.fixAll.biome": true }}
Use the source action code
source.action.useSortedKeys.biome How to configure
Section titled “How to configure”{ "assist": { "actions": { "source": { "useSortedKeys": "on" } } }}Description
Section titled “Description”Sort keys in a JSON object.
By default, the action uses
natural order: uppercase letters come
before lowercase letters (A before a), and numbers are compared by value (item9
before item10).
Examples
Section titled “Examples”{ "vase": "fancy", "nested": { "omega": "bar", "alpha": "foo" }}code-block.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Source action diff:
1 1 │ {
2 │ - ····"vase":·"fancy",
3 │ - ····"nested":·{
2 │ + ····"nested":·{
4 3 │ "omega": "bar",
5 4 │ "alpha": "foo"
6 │ - ····}
5 │ + ····},
6 │ + ····"vase":·"fancy"
7 7 │ }
8 8 │
code-block.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Source action diff:
2 2 │ "vase": "fancy",
3 3 │ "nested": {
4 │ - ········"omega":·"bar",
5 │ - ········"alpha":·"foo"
4 │ + ········"alpha":·"foo",
5 │ + ········"omega":·"bar"
6 6 │ }
7 7 │ }
Options
Section titled “Options”sortOrder
Section titled “sortOrder”Selects natural or lexicographic ordering. Natural ordering compares numbers by value
and is the default. Lexicographic ordering compares keys character by character.
The following configuration uses natural order:
{ "assist": { "actions": { "source": { "useSortedKeys": { "level": "on", "options": { "sortOrder": "natural" } } } } }}{ "val13": 1, "val1": 1, "val2": 1, "val21": 1, "val11": 1}code-block.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Source action diff:
1 1 │ {
2 │ - ····"val13":·1,
3 │ - ····"val1":·1,
4 │ - ····"val2":·1,
5 │ - ····"val21":·1,
6 │ - ····"val11":·1
2 │ + ····"val1":·1,
3 │ + ····"val2":·1,
4 │ + ····"val11":·1,
5 │ + ····"val13":·1,
6 │ + ····"val21":·1
7 7 │ }
8 8 │
The following configuration uses lexicographic order.
{ "assist": { "actions": { "source": { "useSortedKeys": { "level": "on", "options": { "sortOrder": "lexicographic" } } } } }}{ "val13": 1, "val1": 1, "val2": 1, "val21": 1, "val11": 1}code-block.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Source action diff:
1 1 │ {
2 │ - ····"val13":·1,
3 │ - ····"val1":·1,
4 │ - ····"val2":·1,
5 │ - ····"val21":·1,
6 │ - ····"val11":·1
2 │ + ····"val1":·1,
3 │ + ····"val11":·1,
4 │ + ····"val13":·1,
5 │ + ····"val2":·1,
6 │ + ····"val21":·1
7 7 │ }
8 8 │
groupByNesting
Section titled “groupByNesting”Groups keys by the shape of their values before sorting by name. Strings, numbers, booleans,
null, and single-line arrays or objects come first. Multi-line arrays and objects come
afterward. Defaults to false.
{ "assist": { "actions": { "source": { "useSortedKeys": { "level": "on", "options": { "groupByNesting": true } } } } }}{ "name": "Sample", "details": { "description": "nested" }, "id": 123}code-block.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Source action diff:
1 1 │ {
2 │ - ····"name":·"Sample",
2 │ + ····"id":·123,
3 │ + ····"name":·"Sample",
3 4 │ "details": {
4 5 │ "description": "nested"
5 │ - ····},
6 │ - ····"id":·123
6 │ + ····}
7 7 │ }
8 8 │
Related links
Section titled “Related links”Copyright (c) 2023-present Biome Developers and Contributors.