Мне нравится json как формат файлов конфигурации для программного обеспечения, которое я пишу. Мне нравится, что он легкий, простой и широко поддерживается. Тем не менее, я обнаружил, что есть некоторые вещи, которые мне очень нравятся в json, которых у него нет.
Json не имеет многострочных строк или здесь документов (http://en.wikipedia.org/wiki/Here_document), и это часто очень неудобно, когда вы хотите, чтобы ваш json файл быть удобочитаемым и доступным для человека. Вы можете использовать массивы строк, но это kludgy обходной путь.
Json не дает комментариев.
Если вы посмотрите на форматы файлов конфигурации unix, вы увидите, что многие люди разрабатывают свои собственные неудобные форматы для вещей, которые действительно имеют смысл делать с использованием какой-то вещи общего назначения. Например, здесь некоторый код из конфигурационного файла Apache:
RewriteEngine on
RewriteBase /temp
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml\s*;\s*q=0
RewriteCond %{REQUEST_URI} \.html
RewriteCond %{THE_REQUEST} HTTP/1\.1
RewriteRule t\.html t.xhtml [T=application/xhtml+xml]
По существу, здесь происходит то, что они изобрели чрезвычайно болезненный способ написания булевой функции f (w, x, y, z) = w &! x & y & z. Вам нужен логический "или"? У них тоже есть отдельный (уродливый) механизм.
То, что это, похоже, указывает на какой-то язык описания данных, который прост и Turing-неполный, но еще более выразительный, гибкий и удобный, чем json. Кто-нибудь знает о таком языке?
По моему мнению, XML слишком сложный, а выражения lisp имеют неправильные функции (Turing-полнота) и не имеют правильных функций (здесь документы, выразительный синтаксис).
[EDIT] Название вводит в заблуждение. Меня не интересует буквально следующая итерация json. Меня не интересуют языки, которые являются подмножеством javascript. Меня интересуют альтернативные языки описания данных.