| cbor-java | |
| ========= | |
| A Java 7 implementation of [RFC 7049](http://tools.ietf.org/html/rfc7049): Concise Binary Object Representation ([CBOR](http://cbor.io/)) | |
| [](https://travis-ci.org/c-rack/cbor-java) | |
| [](https://coveralls.io/github/c-rack/cbor-java?branch=master) | |
| [](https://scan.coverity.com/projects/1218) | |
| [](https://www.versioneye.com/user/projects/555e2fb6634daa30fb000ea0) | |
| ## Features | |
| * Encodes and decodes **all examples** described in RFC 7049 | |
| * Provides a **fluent interface builder** for CBOR messages | |
| * Supports semantic tags | |
| * Supports 64-bit integer values | |
| * Passes all [CPD](http://c-rack.github.io/cbor-java/cpd.html), [PMD](http://c-rack.github.io/cbor-java/pmd.html) and [FindBugs](http://c-rack.github.io/cbor-java/findbugs.html) tests | |
| ## Documentation | |
| * [Documentation](http://c-rack.github.io/cbor-java/) | |
| * [JavaDoc](http://c-rack.github.io/cbor-java/apidocs/index.html) | |
| ## Maven Dependency | |
| Add this to the dependencies section of your pom.xml file: | |
| ```xml | |
| <dependency> | |
| <groupId>co.nstant.in</groupId> | |
| <artifactId>cbor</artifactId> | |
| <version>0.8</version> | |
| </dependency> | |
| ``` | |
| ## Usage | |
| ### Encoding Example | |
| ```java | |
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); | |
| new CborEncoder(baos).encode(new CborBuilder() | |
| .add("text") // add string | |
| .add(1234) // add integer | |
| .add(new byte[] { 0x10 }) // add byte array | |
| .addArray() // add array | |
| .add(1) | |
| .add("text") | |
| .end() | |
| .build()); | |
| byte[] encodedBytes = baos.toByteArray(); | |
| ``` | |
| ### Decoding Example | |
| ```java | |
| ByteArrayInputStream bais = new ByteArrayInputStream(encodedBytes); | |
| List<DataItem> dataItems = new CborDecoder(bais).decode(); | |
| for(DataItem dataItem : dataItems) { | |
| // process data item | |
| } | |
| ``` | |
| ### Streaming Decoding Example | |
| ```java | |
| ByteArrayInputStream bais = new ByteArrayInputStream(encodedBytes); | |
| new CborDecoder(bais).decode(new DataItemListener() { | |
| @Override | |
| public void onDataItem(DataItem dataItem) { | |
| // process data item | |
| } | |
| }); | |
| ``` | |
| ## Contribution Process | |
| This project uses the [C4 process](https://rfc.zeromq.org/spec:42/C4/) for all code changes. | |
| ## License | |
| Copyright 2013-2017 Constantin Rack | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. |