GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - json-e/json-e: A data-structure parameterization system written for embedding context in JSON objects

BranchesTags
Open more actions menu

Latest commit

 

History

1,473 Commits
1,473 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
docs
docs
 
 
img
img
 
 
internal
internal
 
 
js
js
 
 
py
py
 
 
rs
rs
 
 
scripts
scripts
 
 
.git-blame-ignore-revs
.git-blame-ignore-revs
 
 
.gitignore
.gitignore
 
 
.gometalinter.json
.gometalinter.json
 
 
.npmignore
.npmignore
 
 
.taskcluster.yml
.taskcluster.yml
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CLAUDE.md
CLAUDE.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
RELEASING.md
RELEASING.md
 
 
book.toml
book.toml
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 
jsone.go
jsone.go
 
 
newsfragments
newsfragments
 
 
pyproject.toml
pyproject.toml
 
 
release.sh
release.sh
 
 
specification.yml
specification.yml
 
 

Repository files navigation

JSON-e

JSON-e is a data-structure parameterization system for embedding context in JSON objects.

The central idea is to treat a data structure as a "template" and transform it, using another data structure as context, to produce an output data structure.

There are countless libraries to do this with strings, such as mustache. What makes JSON-e unique is that it operates on data structures, not on their textual representation. This allows input to be written in a number of formats (JSON, YAML, etc.) or even generated dynamically. It also means that the output cannot be "invalid", even when including large chunks of contextual data.

JSON-e is also designed to be safe for use on untrusted data. It never uses eval or any other function that might result in arbitrary code execution. It also disallows unbounded iteration, so any JSON-e rendering operation will finish in finite time.

Language Definition and Implementations

This repository both defines the JSON-e language and contains several implementations of that language.

The language definition is embodied in ./specification.yml and the documentation for the language constructs.

The language and implementations are all versioned together, following semantic versioning. Breaking changes to the language specification are not common, and typically result from bugfixes rather than new features. Generally, you may consider the language stable.

Any discrepancy in behavior between the implementations that is not documented as undefined behavior is considered a bug. If fixing that bug can cause backward incompatibility in an implementation, then the change may be considered breaking and be released with a new major version.

Other Implementations

  • json-everything provides a implementation in .NET.

Full Documentation

See json-e.js.org.

Changes

See CHANGELOG.md for the changes in each version of this library.

In Action

Where is JSON-e used?

  • AlterSchema specifies upgrades as a set of declarative transformation rules written in JSON Schema itself and JSON-e.
  • Taskcluster uses JSON-e extensively to generate task definitions from various JSON-shaped inputs such as GitHub events.

(feel free to submit a PR to add your project here)

About

A data-structure parameterization system written for embedding context in JSON objects

json-e.js.org/

Topics

expression-languagejsonstring-interpolationtemplateuntrusted-valuesyaml

Resources

Readme
License

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

213 stars

Watchers

9 watching

Forks

92 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.