Java Gson-序列化时避免不必要的包装类

Java Gson-序列化时避免不必要的包装类,java,gson,wrapper,Java,Gson,Wrapper,我有一个Json字符串: { "Locations":{ "Location":[{ "elevation":"100", "latitude":"0", "longitude":"0", "name":"Ocean" }, ... ]} } 我想使用Gson将其序列化为Location类的数组: public class Locati

我有一个Json字符串:

{
    "Locations":{
        "Location":[{
            "elevation":"100",
            "latitude":"0",
            "longitude":"0",
            "name":"Ocean"
        },
        ...
    ]}
}
我想使用
Gson
将其序列化为
Location
类的数组:

public class Location {
    public double elevation;
    public double latitude;
    public double longitude;
    public String name;
}
而不是创建一个
Locations
类和一个带有
Locations
字段的包装类。这是可能的吗?

这应该是可行的:

jsonStr=“…”;

类可以获取
位置
对象,然后获取
位置
数组。下面的代码是纯Gson:

String jsonAsText = "{\"Locations\":{\"Location\":[{\"elevation\":\"100\",\"latitude\":\"0\",\"longitude\":\"0\",\"name\":\"Ocean\"},{\"elevation\":\"100\",\"latitude\":\"0\",\"longitude\":\"0\",\"name\":\"Ocean\"}]}}";

GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();

java.lang.reflect.Type listType = new com.google.gson.reflect.TypeToken<List<Location>>(){}.getType();

JsonArray locationJsonList = (JsonArray) ((JsonObject) gson.fromJson(jsonAsText, JsonObject.class).get("Locations")).get("Location");
List<Location> locatioList = gson.fromJson(locationJsonList, listType);
String jsonAsText=“{\'Locations\”:{\'Location\”:[{\'elevation\”:“100\”,“latitude\”:“0\”,“longitude\”:“0\”,“name\”:“Ocean\”,{\'elevation\“:“100\”,“latitude\”:“0\”,“longitude\”:“0\”,“name\”:“Ocean\”,“Ocean\”)};
GsonBuilder GsonBuilder=新的GsonBuilder();
Gson-Gson=gsonBuilder.create();
java.lang.reflect.Type listType=new com.google.gson.reflect.TypeToken(){}.getType();
JsonArray locationJsonList=(JsonArray)((JsonObject)gson.fromJson(jsonAsText,JsonObject.class).get(“位置”).get(“位置”);
List locatioList=gson.fromJson(locationJsonList,listType);

我是否可以将其与Gson解耦?@ClaireHarrison-使用简单的旧Java映射和列表,您可以使用几乎任何JSON工具包对其进行序列化。您的意思是让它与任何JSON解析器一起工作?我不确定。只需创建相应的映射,列出并序列化它们。这将在你问完问题之前完成。@HotLicks示例?在创建包含海拔、纬度、经度和名称的地图之前,我从来没有这样做过。把那个地图放在一个列表里,把这个列表放在一个名为“location”的地图里。将该地图放在名为“地点”的地图中。使用您选择的工具包序列化。如果您愿意,可以为您选择的工具箱使用特定的类,而不是Map/List。