[//]: # " Copyright (c) 2018, 2026 Oracle and/or its affiliates. All rights reserved. "
[//]: # "  "
[//]: # " This program and the accompanying materials are made available under the "
[//]: # " terms of the Eclipse Public License v. 2.0, which is available at "
[//]: # " http://www.eclipse.org/legal/epl-2.0. "
[//]: # "  "
[//]: # " This Source Code may also be made available under the following Secondary "
[//]: # " Licenses when the conditions for such availability set forth in the "
[//]: # " Eclipse Public License v. 2.0 are satisfied: GNU General Public License, "
[//]: # " version 2 with the GNU Classpath Exception, which is available at "
[//]: # " https://www.gnu.org/software/classpath/license.html. "
[//]: # "  "
[//]: # " SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 "

# Jakarta JSON Processing

[![Build Status](https://github.com/eclipse-ee4j/jsonp/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/eclipse-ee4j/jsonp/actions/workflows/maven.yml?branch=master)
[![Jakarta Staging (Snapshots)](https://img.shields.io/nexus/s/https/jakarta.oss.sonatype.org/jakarta.json/jakarta.json-api.svg)](https://jakarta.oss.sonatype.org/content/repositories/staging/jakarta/json/jakarta.json-api/)

Jakarta JSON Processing provides portable APIs to parse, generate, transform, and query JSON documents.
This project contains Jakarta JSON Processing specification, API and TCK.

## Build

Prerequisites:
* JDK 17+
* Maven 3.9.0+

Use the following command:
```bash
mvn -U -C clean install
```

## License

* Most of the Jakarta JSON Processing project source code is licensed
under the [Eclipse Public License (EPL) v2.0](https://projects.eclipse.org/license/epl-2.0)
and [GNU General Public License (GPL) v2 with Classpath Exception](https://www.gnu.org/software/classpath/license.html);
see the license information at the top of each source file.
* The binary jar files published to the Maven repository are licensed
under the same licenses as the corresponding source code;
see the file `META-INF/LICENSE.txt` in each jar file.

You’ll find the text of the licenses in the workspace in various `LICENSE.txt` or `LICENSE.md` files.
Don’t let the presence of these license files in the workspace confuse you into thinking
that they apply to all files in the workspace.

You should always read the license file included with every download, and read
the license text included in every source file.

## Links

- [Jakarta JSON Processing @ Eclipse](https://projects.eclipse.org/projects/ee4j.jsonp)

## Contributing

We use [contribution policy](CONTRIBUTING.md), which means we can only accept contributions under
the terms of [Eclipse Contributor Agreement](http://www.eclipse.org/legal/ECA.php).
