Java 如何仅反序列化JSON中的某些字段?

Java 如何仅反序列化JSON中的某些字段?,java,json,serialization,gson,Java,Json,Serialization,Gson,我正在使用Gson扩展一些字段。顺便说一下,我不想创建一个类,因为在所有JSON响应中我只需要一个值。以下是我的回答: { "result": { "name1": "value1", "name2": "value2", }, "wantedName": "wantedValue" } 我需要wantedValue,但我不想为反序列化创建整个类。使用Gson是否可以实现这一点 如果只需要一个字段,请使用JSONObject import

我正在使用Gson扩展一些字段。顺便说一下,我不想创建一个类,因为在所有JSON响应中我只需要一个值。以下是我的回答:

{
    "result": {
        "name1": "value1",
        "name2": "value2",
    },
    "wantedName": "wantedValue"
}

我需要
wantedValue
,但我不想为反序列化创建整个类。使用Gson是否可以实现这一点

如果只需要一个字段,请使用
JSONObject

import org.json.JSONException;
import org.json.JSONObject;


public class Main { 
public static void main(String[] args) throws JSONException  {

    String str = "{" + 
            "    \"result\": {" + 
            "        \"name1\": \"value1\"," + 
            "        \"name2\": \"value2\"," + 
            "    }," + 
            "    \"wantedName\": \"wantedValue\"" + 
            "}";

    JSONObject jsonObject = new JSONObject(str);

    System.out.println(jsonObject.getString("wantedName"));
}
输出:

wantedValue

可以仅使用gson的一部分,仅用于解析json:

Reader reader = /* create reader from source */
Streams.parse(new JsonReader(reader)).getAsJsonObject().get("wantedValue").getAsString();

如果您不必使用Gson,我会使用。您可以轻松提取单个字段。我找不到一个方法来做这么简单的使用Gson

你就这么做吧

String wantedName = new JSONObject(jsonString).getString("wantedName");

您可能可以自己解析JSON以找到“wantedName”值。@Cruncher我考虑的是regex,但如果可能的话,我希望避免使用它。您可以创建一个
排除策略
,请参见此处: