JBehave is a BDD framework for Java and all JVM languages

Related tags

JSON jbehave-core
Overview

Build Status

JBehave

JBehave is a BDD framework for Java and all JVM languages (Groovy, Kotlin, Ruby, Scala).

JBehave logo

Using

Canonical information for JBehave:

  1. Web Site.
  2. Stable Reference.
  3. User mailing list
  4. Search Maven

Contributing and Developing

Please report issues, feature requests on JIRA or discuss them on the dev mailing list.

Keep an eye on the Github Actions server for JBehave builds.

JDK Version

At compile-time, JDK 11 is required to build JBehave modules

At runtime, end users can use JDK 8 or above in their own projects that use JBehave for testing.

Maven

Maven version required to build: 3.6 or above (while tested with 3.6.x it may also work with previous 3.x versions)

Some additional setup may be required to build the

Encoding

Configure IDE to use UTF-8 for all files Configure Maven by adding "-Dfile.encoding=UTF-8" to $MAVEN_OPTS

IDE Integration

Maven is supported in all major IDEs, including Intellij IDEA and Eclipse.

Building

The first time you run the Maven build, do:

mvn install -s settings.xml

After that, it is necessary to only do the following:

mvn install

Maven Build Profiles

  • default: builds all releasable modules
  • examples: builds all headless examples
  • gui: builds examples that require a GUI (i.e. non-headless) mode (separated as they do not run on CI.
  • nt: no-test, builds skipping unit-test behaviors

Maven Build Profiles used during release cycle

  • reporting: builds reports
  • distribution: builds distribution (documentation)

Note: profiles are additive and the default profile is always active.

Example Profile Usages

Build Core and all Examples

mvn install -Pexamples

Build with Reporting and Distribution

mvn install -Preporting,distribution

Building a Release with Maven

mvn release:prepare -Preporting,distribution
mvn release:perform -Preporting,distribution

Related JBehave projects

See also:

License

See LICENSE.txt in the source root (BSD).

Comments
  • Question: JBehave 5.0 release

    Question: JBehave 5.0 release

    Hello,

    I just wanted to know if there was a plan to release the version 5 soon. The performance improvements on the step collections are quite interesting.

    Thanks,

    opened by symphony-youri 4
  • Test

    Test

    This is probably a user misconfiguration on my side but I'd appreciate if you could help me resolve it.

    I have a couple of jUnit test classes, each of them containing a single @Test method that instantiates a jBehave JupiterStories and manually invokes its run() method (see below example).

    I'm using IntelliJ as IDE to develop and run those tests. The problem is the following:

    1. I run one of the tests that contains a story called "Generic Allocation Task E2e". The story fails due to production code bug and hence - the jUnit test fails.
    2. Without cleaning up the target/jbehave folder I run another test that contains a story called "Generic Allocation Task Already Executed". The story succeeds, however, the jUnit test itself fails because the story from 1. is still in the target/jbehave/view/report.html report and jBehave seems to report a failure.

    image image

    How do I fix this? It's very misleading that my GenericAllocationTaskAlreadyExecutedStoryTest test is shown as failing in IntelliJ when in fact it's another test from an older execution that caused it to fail. Is there a configuration to fix that?

    public class GenericAllocationTaskAlreadyExecutedStoryTest extends RequestBaseTest {
    
        @Test
        public void runStory() {
            new GenericAllocationTaskAlreadyExecutedStory().run();
        }
    
        public class GenericAllocationTaskAlreadyExecutedStory extends JupiterStories {
            @Override
            public Configuration configuration() {
                Class<? extends Embeddable> embeddableClass = this.getClass();
                Properties viewResources = new Properties();
                viewResources.put("decorateNonHtml", "true");
                // Start from default ParameterConverters instance
                ParameterConverters parameterConverters = new ParameterConverters();
                // factory to allow parameter conversion and loading from external
                // resources (used by StoryParser too)
    
                return new MostUsefulConfiguration()
                        .useStoryControls(new StoryControls().doDryRun(false).doSkipScenariosAfterFailure(false))
                        .useStoryLoader(new LoadFromClasspath(embeddableClass))
                        .useStoryPathResolver(new UnderscoredCamelCaseResolver())
                        .useStoryReporterBuilder(
                                new StoryReporterBuilder()
                                        .withCodeLocation(CodeLocations.codeLocationFromClass(embeddableClass))
                                        .withSurefireReporter(new SurefireReporter(embeddableClass))
                                        .withDefaultFormats().withPathResolver(new ResolveToPackagedName())
                                        .withViewResources(viewResources).withFormats(CONSOLE, HTML)
                                        .withFailureTrace(true)
                                        .withFailureTraceCompression(true))
                        .useParameterConverters(parameterConverters);
            }
    
            @Override
            public InjectableStepsFactory stepsFactory() {
                return new InstanceStepsFactory(configuration(), getSteps());
            }
    
            private List<Object> getSteps() {
                StepContext context = new StepContext(
                        GenericAllocationTaskAlreadyExecutedStoryTest.this);
                return Arrays.asList(
                        new ComputeAllocationSteps(context),
                        new NetworkAllocationSteps(context),
                        new FlavorAllocationSteps(context),
                        new GenericAllocationTaskSteps(context));
            }
            
            @Override
            public List<String> storyPaths() {
                return new StoryFinder().findPaths(CodeLocations.codeLocationFromClass(this.getClass()),
                        String.format("**/%s", "generic_allocation_task_already_executed.story"), "");
            }
    
            @Override
            public Embedder injectedEmbedder() {
                Embedder embedder = super.injectedEmbedder();
                embedder.useMetaFilters(Arrays.asList("-Ignored"));
                return embedder;
            }
        }
    }
    

    Exception at the end of the test:

    Generating reports view to '***\target\jbehave' using formats '[stats, console, html]' and view properties '{decorateNonHtml=true}'
    Reports view generated with 3 stories (of which 0 pending) containing 11 scenarios (of which 0 pending)
    12:12:10.731+0200  INFO [main] ***.GenericAllocationTaskAlreadyExecutedStoryTest.log:454 - ---> ENDING test: GenericAllocationTaskAlreadyExecutedStoryTest.runStory
    
    org.jbehave.core.embedder.Embedder$RunningStoriesFailed: Failures in running stories: ReportsCount[scenarios=11,scenariosExcluded=0,scenariosFailed=9,scenariosPending=0,stepsFailed=9,stories=3,storiesExcluded=0,storiesPending=0]
    
    	at org.jbehave.core.embedder.Embedder$ThrowingRunningStoriesFailed.handleFailures(Embedder.java:546)
    	at org.jbehave.core.embedder.Embedder.handleFailures(Embedder.java:253)
    	at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:281)
    	at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:262)
    	at org.jbehave.core.embedder.Embedder.runStoriesAsPaths(Embedder.java:222)
    	at org.jbehave.core.junit.JupiterStories.run(JupiterStories.java:22)
    	at com.***.GenericAllocationTaskAlreadyExecutedStoryTest.runStory(GenericAllocationTaskAlreadyExecutedStoryTest.java:50)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
    	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
    	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
    
    
    
    opened by mdzhigarov 1
  • JBEHAVE-1569 Use JDK collections instead of Guava ones

    JBEHAVE-1569 Use JDK collections instead of Guava ones

    guava dependemcy is optional, it's needed only if org.jbehave.core.embedder.executors.DirectExecutorService is used. All other usages of guava dependeny are prohibited in order to keep dependency tree clean.

    opened by valfirst 1
  • [Question] Are the user/dev mailing lists active?

    [Question] Are the user/dev mailing lists active?

    I'm trying to subscribe to the user mailing list here: https://jbehave.org/mailing-lists.html

    ... but I don't find any jbehave groups at https://groups.google.com/ image

    How do I subscribe to the users group? I have some questions that I'd like to ask there :)

    opened by mdzhigarov 1
  • Getting FreemarkerProcessor$FreemarkerProcessingFailed when report is generated

    Getting FreemarkerProcessor$FreemarkerProcessingFailed when report is generated

    I'm getting some odd exception in one of my stories. Using jBehave 5.0

    This is how my configuration looks like:

    @Override
        public Configuration configuration() {
            Class<? extends Embeddable> embeddableClass = this.getClass();
            // Start from default ParameterConverters instance
            ParameterConverters parameterConverters = new ParameterConverters();
            // factory to allow parameter conversion and loading from external
            // resources (used by StoryParser too)
    
            return new MostUsefulConfiguration()
                    .useStoryControls(new StoryControls().doDryRun(false).doSkipScenariosAfterFailure(false))
                    .useStoryLoader(new LoadFromClasspath(embeddableClass))
                    .useStoryPathResolver(new UnderscoredCamelCaseResolver())
                    .useStoryReporterBuilder(
                            new StoryReporterBuilder()
                                    .withCodeLocation(CodeLocations.codeLocationFromClass(embeddableClass))
                                    .withSurefireReporter(new SurefireReporter(embeddableClass))
                                    .withDefaultFormats().withPathResolver(new ResolveToPackagedName())
                                    .withFormats(CONSOLE, TXT)
                                    .withFailureTrace(true)
                                    .withFailureTraceCompression(true))
                    .useParameterConverters(parameterConverters);
        }
    

    The exception I'm getting:

    org.jbehave.core.embedder.Embedder$ViewGenerationFailed: View generation failed to C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave for formats [stats, console, txt] and resources {reports=ftl/jbehave-reports.ftl, nonDecorated=ftl/jbehave-report-non-decorated.ftl, maps=ftl/jbehave-maps.ftl, views=ftl/jbehave-views.ftl, decorated=ftl/jbehave-report-decorated.ftl}
    
    	at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:277)
    	at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:262)
    	at org.jbehave.core.embedder.Embedder.runStoriesAsPaths(Embedder.java:222)
    	at org.jbehave.core.junit.JupiterStories.run(JupiterStories.java:22)
    	at com.mdzh.admiral.request.genericallocation.GenericAllocationTaskE2EStoryTest.runStory(GenericAllocationTaskE2EStoryTest.java:32)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    	at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
    	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
    	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
    Caused by: org.jbehave.core.reporters.TemplateableViewGenerator$ReportCreationFailed: Report creation failed from file {AfterStories=[C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\AfterStories.stats, C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\AfterStories.txt], BeforeStories=[C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\BeforeStories.stats, C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\BeforeStories.txt], jbehave.generic_allocation_group_id_calculation=[C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\jbehave.generic_allocation_group_id_calculation.stats, C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\jbehave.generic_allocation_group_id_calculation.txt], jbehave.generic_allocation_task_already_executed=[C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\jbehave.generic_allocation_task_already_executed.stats, C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\jbehave.generic_allocation_task_already_executed.txt], jbehave.generic_allocation_task_е2е=[C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\jbehave.generic_allocation_task_е2е.stats, C:\Users\mdzhigarov\git\provisioning-service\request\target\jbehave\jbehave.generic_allocation_task_е2е.txt]}
    	at org.jbehave.core.reporters.TemplateableViewGenerator.createReports(TemplateableViewGenerator.java:247)
    	at org.jbehave.core.reporters.TemplateableViewGenerator.generateReportsView(TemplateableViewGenerator.java:128)
    	at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:274)
    	... 38 more
    Caused by: org.jbehave.core.reporters.TemplateableViewGenerator$ViewGenerationFailedForTemplate: ftl/jbehave-report-decorated.ftl
    	at org.jbehave.core.reporters.TemplateableViewGenerator.write(TemplateableViewGenerator.java:293)
    	at org.jbehave.core.reporters.TemplateableViewGenerator.createReports(TemplateableViewGenerator.java:240)
    	... 40 more
    Caused by: org.jbehave.core.reporters.FreemarkerProcessor$FreemarkerProcessingFailed: Freemarker failed to process template ftl/jbehave-report-decorated.ftl using configuration freemarker.template.Configuration@3ae7dc1f and data model {name=jbehave.generic_allocation_task_е2е, format=stats, body=#org.jbehave.core.reporters.PostStoryStatisticsCollector
    #Thu Nov 24 18:30:15 EET 2022
    scenariosExcluded=0
    comments=0
    scenariosPending=0
    pending=0
    stepsFailed=0
    scenarios=1
    stepsSuccessful=13
    stepsIgnorable=0
    givenStoryScenariosSuccessful=0
    steps=13
    givenStoryScenariosPending=0
    excluded=0
    givenStoryScenarios=0
    scenariosFailed=0
    examples=0
    stepsPending=0
    scenariosSuccessful=1
    stepsNotPerformed=0
    givenStoryScenariosExcluded=0
    givenStories=0
    givenStoryScenariosFailed=0
    }
    	at org.jbehave.core.reporters.FreemarkerProcessor.process(FreemarkerProcessor.java:30)
    	at org.jbehave.core.reporters.TemplateableViewGenerator.write(TemplateableViewGenerator.java:289)
    	... 41 more
    	Suppressed: java.nio.charset.UnmappableCharacterException: Input length = 1
    		at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:275)
    		at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:306)
    		at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:281)
    		at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
    		at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:211)
    		at java.base/java.io.BufferedWriter.flushBuffer(BufferedWriter.java:120)
    		at java.base/java.io.BufferedWriter.close(BufferedWriter.java:268)
    		at org.jbehave.core.reporters.TemplateableViewGenerator.write(TemplateableViewGenerator.java:288)
    		... 41 more
    Caused by: java.nio.charset.UnmappableCharacterException: Input length = 1
    	at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:275)
    	at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:306)
    	at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:281)
    	at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
    	at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:211)
    	at java.base/java.io.BufferedWriter.flushBuffer(BufferedWriter.java:120)
    	at java.base/java.io.BufferedWriter.flush(BufferedWriter.java:256)
    	at freemarker.core.Environment.process(Environment.java:329)
    	at freemarker.template.Template.process(Template.java:383)
    	at org.jbehave.core.reporters.FreemarkerProcessor.process(FreemarkerProcessor.java:28)
    	... 42 more
    
    

    I'm not getting this for any of my other stories and I don't understand what's so special about this story in particular. It's almost identical to the other ones. Any help will be appreciated...

    opened by mdzhigarov 3
  • Threads Example not running, getting java.lang.ClassCastException

    Threads Example not running, getting java.lang.ClassCastException

    I am trying to run this Thread examples locally. Getting below error.
    Caused by: java.lang.ClassCastException: class org.jbehave.examples.threads.steps.ThreadsSteps cannot be cast to class org.jbehave.core.Embeddable (org.jbehave.examples.threads.steps.ThreadsSteps is in unnamed module of loader org.jbehave.core.embedder.EmbedderClassLoader @12b5454f; org.jbehave.core.Embeddable is in unnamed module of loader org.codehaus.plexus.classworlds.realm.ClassRealm @70325d20)

    I am following same for my project , still same issue,

    opened by ashanmuga 1
  • SureFireReport should include example scenarios

    SureFireReport should include example scenarios

    I have one outline scenario with 2 samples, the surefire xml report only contains the outline scenario. And the status of the testcase is misleading , especially when one of the samples is failed while the other is passed.

    opened by ghzhou 1
Owner
null
MapNeat is a JVM library written in Kotlin that provides an easy to use DSL (Domain Specific Language) for transforming JSON to JSON, XML to JSON, POJO to JSON in a declarative way.

MapNeat is a JVM library written in Kotlin that provides an easy to use DSL (Domain Specific Language) for transforming JSON to JSON, XML to JSON, POJ

Andrei Ciobanu 59 Sep 17, 2022
A 250 lines single-source-file hackable JSON deserializer for the JVM. Reinventing the JSON wheel.

JSON Wheel Have you ever written scripts in Java 11+ and needed to operate on some JSON string? Have you ever needed to extract just that one deeply-n

Roman Böhm 14 Jan 4, 2023
Framework for serialization to Json, XML, Byte and Excel, therefore an oviparous wool milk sow J

NetworkParser Framework for serialization from Java objects to Json, XML and Byte. NetworkParser is a simple framework for serializing complex model s

Fujaba Tool Suite 4 Nov 18, 2020
Weld, including integrations for Servlet containers and Java SE, examples and documentation

Weld Weld is the reference implementation of CDI: Contexts and Dependency Injection for the Java EE Platform which is the Java standard for dependency

Weld 345 Oct 28, 2022
A Java serialization/deserialization library to convert Java Objects into JSON and back

Gson Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to a

Google 21.7k Jan 8, 2023
A universal types-preserving Java serialization library that can convert arbitrary Java Objects into JSON and back

A universal types-preserving Java serialization library that can convert arbitrary Java Objects into JSON and back, with a transparent support of any kind of self-references and with a full Java 9 compatibility.

Andrey Mogilev 9 Dec 30, 2021
Java with functions is a small java tools and utils library.

Java with functions is a small java tools and utils library.

null 4 Oct 14, 2022
Convert Java to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.

json-io Perfect Java serialization to and from JSON format (available on Maven Central). To include in your project: <dependency> <groupId>com.cedar

John DeRegnaucourt 303 Dec 30, 2022
Android processing and secured library for managing SharedPreferences as key-value elements efficiently and structurally.

Memo Android processing and secured library for managing SharedPreferences as key-value elements efficiently and structurally. 1. Depend on our librar

ZeoFlow 18 Jun 30, 2022
A JSON Transmission Protocol and an ORM Library for automatically providing APIs and Docs.

?? 零代码、热更新、全自动 ORM 库,后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构。 ?? A JSON Transmission Protocol and an ORM Library for automatically providing APIs and Docs.

Tencent 14.4k Dec 31, 2022
Set of support modules for Java 8 datatypes (Optionals, date/time) and features (parameter names)

Overview This is a multi-module umbrella project for Jackson modules needed to support Java 8 features, especially with Jackson 2.x that only requires

FasterXML, LLC 372 Dec 23, 2022
A modern JSON library for Kotlin and Java.

Moshi Moshi is a modern JSON library for Android and Java. It makes it easy to parse JSON into Java objects: String json = ...; Moshi moshi = new Mos

Square 8.7k Dec 31, 2022
Generate Java types from JSON or JSON Schema and annotates those types for data-binding with Jackson, Gson, etc

jsonschema2pojo jsonschema2pojo generates Java types from JSON Schema (or example JSON) and can annotate those types for data-binding with Jackson 2.x

Joe Littlejohn 5.9k Jan 5, 2023
A JSON Schema validation implementation in pure Java, which aims for correctness and performance, in that order

Read me first The current version of this project is licensed under both LGPLv3 (or later) and ASL 2.0. The old version (2.0.x) was licensed under LGP

Java Json Tools 1.5k Jan 4, 2023
A modern and lightweight library for working with email addresses in Java

JMail A modern, fast, zero-dependency library for working with email addresses and performing email address validation in Java. Built for Java 8 and u

Rohan Nagar 67 Dec 22, 2022
Generate getter and setter on Java with ease! PS: Intended to use for labs where typing them are still the norm!!

GenerateGetterSetter Generate getter and setter on Java with ease! PS: Intended to use for labs where typing them are still the norm!! How to use Clon

Vishnu Sanal. T 4 Jan 4, 2022
100% Java, Lambda Enabled, Lightweight Rules Engine with a Simple and Intuitive DSL

RuleBook » A Simple & Intuitive Rules Abstraction for Java 100% Java · Lambda Enabled · Simple, Intuitive DSL · Lightweight Why RuleBook? RuleBook rul

Delivered Technologies Labs 666 Dec 21, 2022
Java libraries for serializing, deserializing, and manipulating JSON values

java-json-toolkit The json-toolkit repository contains the code to the following libraries: json-toolkit-text: basic library for conversion between te

d-coding GmbH 2 Jan 26, 2022
A simple java JSON deserializer that can convert a JSON into a java object in an easy way

JSavON A simple java JSON deserializer that can convert a JSON into a java object in an easy way. This library also provide a strong object convertion

null 0 Mar 18, 2022