Java 获取json的确切部分
我有一个json字符串,下面是一个示例Java 获取json的确切部分,java,json,Java,Json,我有一个json字符串,下面是一个示例 { "Param1":"Value1", "Param2":{...} "ParamThatINeed":{...} } 我想在java中使用gson lib只获取“paramthained”对象,获取所需内容的最佳方法是什么——编写根类,然后为“paramthained”编写类,然后解码json并仅使用“paramthained”对象 或者最好事先将我的jsonString转换为另一个字符串,该字符串将仅是使用例如regexp的“pa
{
"Param1":"Value1",
"Param2":{...}
"ParamThatINeed":{...}
}
我想在java中使用gson lib只获取“paramthained”对象,获取所需内容的最佳方法是什么——编写根类,然后为“paramthained”编写类,然后解码json并仅使用“paramthained”对象
或者最好事先将我的jsonString转换为另一个字符串,该字符串将仅是使用例如regexp的“paramthained”jsonString对象?或者有更好的方法
JsonObject jobj = new Gson().fromJson(YOUR_JSON_HERE, JsonObject.class);
JsonElement value = jobj.get("ParamThatINeed");
值
将包含与参数
键关联的元素。您建议的解决方案是无痛且可扩展的(即,如果您决定将来读取其他字段,您只需向对象添加另一个字段)。一般来说,这正是您希望使用Gson的方式—构造必要的Java类来表示您关心的数据,Gson将默默地丢弃您不关心的字段。对于您的示例,其可能如下所示:
private static final Gson GSON = ...;
public static class MyJsonData {
private final ParamThatINeed paramThatINeed;
public ParamThatINeed getParamThatINeed() { ... }
}
public static class ParamThatINeed {
...
}
public static ParamThatINeed extractParamThatINeed(String json) {
return GSON.fromJson(json, MyJsonData.class).getParamThatINeed();
}
您可以按照@GuiSim的建议自己解析该字段,但如果您的需求发生变化,这将不容易扩展,一般来说,Gson背后的想法是避免直接使用
jsonement
和相关类
我绝对不鼓励将JSON字符串转换为其他格式的预处理步骤。结构化数据和字符串操作不会混合,因为它们会导致脆弱的代码。像Gson这样的JSON解析库的存在正是为了避免这样的字符串操作