有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将动态XML/JSON内容与静态标记化负载进行比较,并检索标记值

我正在实现模拟http响应服务器。服务器必须验证输入请求url和有效负载,然后将请求与配置的响应匹配,然后将其返回给调用方

在这方面,我需要关于使用静态标记负载验证http请求动态内容负载的帮助。 因此,当我得到请求负载(比如json)时,将其与配置的标记化内容进行比较,如果不匹配,则返回failure

例如,我正在使用下面的代码对请求url执行相同的操作

import java.util.HashMap;
import java.util.Map;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriTemplate;


    public static void main(String[] args) {
        //template url
        String template = "/name/{name}/age/{age}";
        UriTemplate uriTemplate = new UriTemplate(template);

        //actual url
        String uri = "/name/Bob/age/47";
        Map<String, String> parameters = new HashMap<>();

        //returns Map
        System.out.println("Dynamic Content Map: " + uriTemplate.match(uri));
        System.out.println("URL Matched: " +uriTemplate.matches(uri));

        parameters.put("name", "Foo");
        parameters.put("age", "37");

        UriComponentsBuilder builder = UriComponentsBuilder.fromPath(template);
        System.out.println(builder.buildAndExpand(parameters).toUriString());

    }

输出:

Dynamic Content: {name=Bob, age=47}
URL Matched: true
/name/Foo/age/37

因此,如果您查看此代码,UriTemplate能够比较配置为动态值(Bob/47)填充内容的静态内容(名称/年龄)

我想在请求负载中进行相同的比较。现在的挑战是

  1. 内容可以是XML或JSON,稍后是其他内容
  2. 内容之间可能包含空格
  3. 顺序将是不同的或不同的xml名称空间
  4. 它将包含动态变量值,以便与静态变量值进行比较
  5. 如何从有效负载中检索动态变量值

我知道我可以使用XML和JSON解析器进行比较,但是如何比较内容中的静态变量和动态变量并检索它们呢

例如)静态的{"name" : "$name", "age" : "$age"}

例如,动态{"name" : "Bob", "age" : 47}

是否有任何工具可以传递静态和动态内容,并且我将获得ISMatch并检索地图中的动态常量,如上图所示

给我一些关于比较和提取动态字段的提示/想法


共 (1) 个答案

  1. # 1 楼答案

    XML和JSON是结构的序列化表示

    您引用的动态内容实际上就是该结构的一个实例

    我认为您需要的是XML的XSD/DTD[1](定义结构的类型)和json的json模式[3]

    这里有多种策略。取决于要验证的服务。您可以将json转换为xml,并使用相同的XSD来验证这两种序列化方法。有各种框架可以帮助您实现这一点。但是,第一步是编写这些模式(XML的XSD/DTD和/或json的json模式)