gpt4 book ai didi

java - 检查 JSON 是否是有效的 Swagger

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:23 25 4
gpt4 key购买 nike

我有一个 javax.json.Json 对象,我需要验证它是否是有效的 Swagger 文件。我写了这些实用函数 -

package com.somecompany.gis.util;

import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;

import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonWriter;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import io.swagger.models.Swagger;
import io.swagger.parser.SwaggerParser;



public class Converter {
public static JsonNode toJsonNode(JsonObject jsonObject) throws IOException {

// Parse a JsonObject into a JSON string
StringWriter stringWriter = new StringWriter();
try (JsonWriter jsonWriter = Json.createWriter(stringWriter)) {
jsonWriter.writeObject(jsonObject);
}
String json = stringWriter.toString();

// Parse a JSON string into a JsonNode
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(json);

return jsonNode;
}

public static boolean isValidSwaggerSpec(JsonObject jsonObject) {
try {
JsonNode jsonNode = toJsonNode(jsonObject);
Swagger swagger = new SwaggerParser().read(jsonNode);
return true;
}catch(IOException ioe) {
return false;
}catch(Exception e) {
return false;
}

}

但是,我发现即使使用无效的 Swagger 文件,我也会得到 true 的评估。有什么方法可以检查 Swagger 是否有效?

最佳答案

您也许可以使用SwaggerParser#readWithInfo它返回 SwaggerDeserializationResult对象,当发生错误时,它们会填充 List<String> messages带有特定消息的该对象:

return new SwaggerDeserializationResult().message("empty or null swagger supplied");
result = new SwaggerDeserializationResult().message("Definition does not appear to be a valid Swagger format");
return new SwaggerDeserializationResult().message("malformed or unreadable swagger supplied");

您可以检查这些句子并确保没有这些句子,这应该意味着它已成功解析。

<小时/>
SwaggerDeserializationResult swagger = new SwaggerParser().readWithInfo(myJSONString);
List<String> messages = swagger.getMessages();

// Check if messages contains any of those strings

关于java - 检查 JSON 是否是有效的 Swagger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53817099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com