-
-
Save MoOx/5271067 to your computer and use it in GitHub Desktop.
{ | |
"//field": "These 'double quote' 'double quote' are used as comments, because JSON doesnt' allow comment", | |
"field": {}, | |
"#another-field": "Another comment", | |
"another-field": {}, | |
"/*stuff": "Be careful to use them when you have full control of the content :)", | |
"stuff": [], | |
"bla": "bla" | |
} |
JSON (& strictly-linted JS) don't allow duplicate keys of objects, so add a unique letter or number to make it validate. This is a trick I've seen somewhere in popular code but can't remember where, sorry. I think the convention of using a "//" as the basis for comment names seems fairly sensible & terse, and should make it easy to programmatically update current JSON configs to some better format in future.
{
"//a": "This is the first comment."
"//b": "...and this is the second."
}
The JSON should all be data, and if you include a comment, then it will be data too.
You could have a designated data element called "_comment" (or something) that would be ignored by apps that use the JSON data.
You would probably be better having the comment in the processes that generates/receives the JSON, as they are supposed to know what the JSON data will be in advance, or at least the structure of it.
{
"_comment": "comment text goes here...",
"Key":"value"
}
nothing works in php (json_decode) - all comments are still in data
Yeah because it's a trick, not real comment. JSON specs just don't have comments...
None of these is how I would have done it,
I would have gone for something like this instead:
{
"Comments": [
"Lorem ipsum dolor sit amet,",
"consectetur adipiscing elit.",
"Suspendisse vitae risus ligula.",
"Fusce vel urna turpis."
]
}
Then you won't have to think about making identifiers for every line, and it validates.
JSON 5 (https://json5.org/) does support comments. However, support for it is limited. E.g. PHP does not support it yet.
You can use:
/*
{
"Comments": [
"Lorem ipsum dolor sit amet,",
"consectetur adipiscing elit.",
"Suspendisse vitae risus ligula.",
"Fusce vel urna turpis."
]
}
*/
other options
put all the comment in the key :-)
there should be less duplicates problems
ex
{
"// this is fun":"",
"// this is also fun": "",
"whatever": {
"// other scope": "",
"// this is fun": ""
},
"port": 8090, "// can't use native port":""
}
I'm also looking for this.
Because JSON is a subset of YAML, # should be used as comment character. IMHO :-) but as with everything one could argue about it
The YAML port: 8090 #can't use native port
could be converted to
a) "port": 8090, "#can't use native port":""
b) "port": 8090, "#":"can't use native port"
Change the file extension to .json5
and you can haz comments 🙂
I found it
Hjson, at https://hjson.github.io/, works better for me than JSON5. YMMV.
Its Python module has been maintained more recently and its documentation shows the syntax of multiline comments as well as #
-based comments.
Another way, if you have a context checker that doesn't allow empty quote strings for declarations:
Hope that helps. Just have your processing code lack processing for it, and it works fine.