Skip to content

JSONC (JSON with comments and optional trailing comma) support #2536

@Artoria2e5

Description

@Artoria2e5

Please describe your feature request.
I wish I could use yq to migrate configuration files written in the https://jsonc.org/ format, more specifically the VS Code dialect with trailing commas.

Describe the solution you'd like
If we have data1.jsonc like:

// sing-box 1.12.0 migration
{
  "dns": {
    "servers": [
      {
        "address": "local",
      }
    ]
  }
}

And we run a command:

yq -P -o jsonc -p jsonc '.dns.servers[0].type = .dns.servers[0].address'

it could output

// sing-box 1.12.0 migration
{
  "dns": {
    "servers": [
      {
        "address": "local",
        "type": "local"
      }
    ]
  }
}

Describe alternatives you've considered
Some kind of prefilter+postfilter to erase trailing commas and to tag where comments are using special metadata keys, maybe.

Additional context
The full migration would've required at least a .dns.servers[0].type = .dns.servers[0].address; del(.dns.servers[0].type) though that doesn't seem to really work.

tidwall/jsonc implements a comment-and-trailing-comma stripper that preserves byte offsets but does not include information on where the comments are.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions