如何拆分和打印JSON / String部分?

时间:2019-06-06 09:38:14

标签: java json

我有一个从数据库中获取的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

4 个答案:

答案 0 :(得分:2)

由于您的问题没有提供有关用于解析JSON文档的库的任何详细信息,因此我整理了一些使用流行的Java JSON解析库的方法。

JsonPath

JsonPath可以很简单地实现:

List<String> required = JsonPath.parse(json).read("$.required");

Jackson

也可以使用Jackson来实现:

ObjectMapper mapper = new ObjectMapper();
List<String> required = mapper.convertValue(mapper.readTree(json).get("required"),
        new TypeReference<List<String>>() {});

Gson

如果您更喜欢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

根据您的需要,可以将JsonPathJacksonGson组合:

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