All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mockserver.matchers.JsonStringMatcher Maven / Gradle / Ivy

There is a newer version: 5.15.0
Show newest version
package org.mockserver.matchers;

import org.mockserver.model.JsonBody;
import org.skyscreamer.jsonassert.JSONCompareMode;
import org.skyscreamer.jsonassert.JSONCompareResult;

import static org.skyscreamer.jsonassert.JSONCompare.compareJSON;

/**
 * @author jamesdbloom
 */
public class JsonStringMatcher extends BodyMatcher {
    private final String matcher;
    private final MatchType matchType;

    public JsonStringMatcher(String matcher, MatchType matchType) {
        this.matcher = matcher;
        this.matchType = matchType;
    }

    public boolean matches(String matched) {
        boolean result = false;

        JSONCompareResult jsonCompareResult;
        try {
            JSONCompareMode jsonCompareMode = JSONCompareMode.LENIENT;
            if (matchType == MatchType.STRICT) {
                jsonCompareMode = JSONCompareMode.STRICT;
            }
            jsonCompareResult = compareJSON(matcher, matched, jsonCompareMode);

            if (jsonCompareResult.passed()) {
                result = true;
            }

            if (!result) {
                logger.trace("Failed to perform JSON match \"{}\" with \"{}\" because {}", matched, this.matcher, jsonCompareResult.getMessage());
            }
        } catch (Exception e) {
            logger.trace("Failed to perform JSON match \"{}\" with \"{}\" because {}", matched, this.matcher, e.getMessage());
        }

        return reverseResultIfNot(result);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy