我有一个从数据库中获取的JSON模式,该数据库现在存储在Java字符串中。我只想打印架构的一部分,而不是全部。如何拆分JSON / String并进行打印。
我尝试将String转换回JSON格式。但不确定如何分隔所需的内容。同样,分割方法也不适用于我。
输入:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"employee_id": {
"type": "string"
},
"course_id": {
"type": "string"
},
"college_id": {
"type": "string"
}
},
"required": [
"employee_id",
"course_id",
"college_id"
]
}
预期结果:
employee_id, course_id, college_id
答案 0 :(得分:2)
由于您的问题没有提供有关用于解析JSON文档的库的任何详细信息,因此我整理了一些使用流行的Java JSON解析库的方法。
JsonPath可以很简单地实现:
List<String> required = JsonPath.parse(json).read("$.required");
也可以使用Jackson来实现:
ObjectMapper mapper = new ObjectMapper();
List<String> required = mapper.convertValue(mapper.readTree(json).get("required"),
new TypeReference<List<String>>() {});
如果您更喜欢Gson:
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
List<String> required = gson.fromJson(jsonObject.getAsJsonArray("required"),
new TypeToken<List<String>>() {}.getType());
根据您的需要,可以将JsonPath与Jackson或Gson组合:
Configuration conf = Configuration.builder()
.jsonProvider(new JacksonJsonProvider())
.mappingProvider(new JacksonMappingProvider())
.build();
Configuration conf = Configuration.builder()
.jsonProvider(new GsonJsonProvider())
.mappingProvider(new GsonMappingProvider())
.build();
List<String> required = JsonPath
.using(conf)
.parse(json)
.read("$.required", new TypeRef<List<String>>() {});
答案 1 :(得分:0)
我制作了一个使用gson的帮助程序库,并能够在json中搜索子树/元素:
https://github.com/Enerccio/gson-utilities
您可以的话
List<JsonElement> contents = JsonHelper.getAll(data, "key.required", x -> x instanceof JsonPrimitive);
System.out.print(contents.stream().map(JsonElement::getAsString).collect(Collectors.joining(", ")));
但是您的JSON无效,有效版本为:
{
"key":{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"employee_id": {
"type": "string"
},
"course_id": {
"type": "string"
},
"college_id": {
"type": "string"
}
},
"required": [
"employee_id",
"course_id",
"college_id"
]
}
}
答案 2 :(得分:0)
String str=
"{
"key":{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"employee_id": {
"type": "string"
},
"course_id": {
"type": "string"
},
"college_id": {
"type": "string"
}
},
"required": [
"employee_id",
"course_id",
"college_id"
]
}
}
";
JSONObject jsonObj=new JSONObject(str);
JSONObject keyJon= jsonObj.getJSONObject("key");
String strUrl=keyJon.getString("$schema");
System.err.println("str "+strUrl);
答案 3 :(得分:0)
下面提到的方法解决了我的问题。
JSONObject jsonObject = new JSONObject(key);
JSONArray req = jsonObject.getJSONArray("required");
System.out.println("Required Parameters : "+req);