编程语言
首页 > 编程语言> > java – 将动态XML / JSON内容与静态标记有效负载进行比较并检索标记值

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

作者:互联网

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

因为我需要帮助验证具有静态标记有效负载的http请求动态内容有效负载.
因此,当我获得请求有效负载时,请说json,将其与配置的标记化内容进行比较,如果不匹配则返回失败.

例如,我正在使用以下代码对请求网址执行相同操作.

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());

    }

OUTPUT:

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

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

我希望在请求有效负载中进行相同的比较.现在的挑战是

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

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

例如)静态{“名称”:“$name”,“age”:“$age”}

例如)动态{“名称”:“鲍勃”,“年龄”:47}

有没有任何工具我可以传递静态和动态内容,我会得到isMatched并检索地图中的动态常量,如上面显示的uriTemplate示例?

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

解决方法:

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

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

我认为你正在寻找的是XML的XSD / DTD [1](定义你的结构类型)和JSON的json-schema [3].

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

> [1] – wiki: XML schema
> [2] – What is the difference between XML and XSD?
> [3] – json-schema
> [4] – How do I validate incoming JSON data inside a REST service?

标签:json,java,parsing,xml,text-parsing
来源: https://codeday.me/bug/20190627/1304024.html