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