gson 如何在JSON中只反序列化某些字段?

mu0hgdu0  于 2023-03-08  发布在  其他
关注(0)|答案(4)|浏览(237)

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

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

我需要wantedValue,但我不想创建整个类来进行反序列化。使用Gson可以实现这一点吗?

wa7juj8i

wa7juj8i1#

如果只需要一个字段,请使用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
lymnna71

lymnna712#

如果你不需要使用Gson,我会使用https://github.com/douglascrockford/JSON-java。你可以很容易地提取单个字段。我找不到一种方法来使用Gson做这么简单的事情。
你只会

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

xggvc2p63#

可以只使用gson的一部分,只使用它来解析json:

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

kyvafyod4#

下面是一个可以与gson 2.10版一起使用的版本

import com.google.gson.Gson;
import com.google.gson.JsonObject;

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

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

        Gson gson = new Gson();
        JsonObject jsonObject = gson.fromJson(str, JsonObject.class);

        System.out.println(jsonObject.get("wantedName").getAsString());
    }
}

相关问题