2 回答
TA贡献1810条经验 获得超4个赞
这是一个使用GSON (谷歌的 json 库)的工作示例:
请注意,您必须使用""引号而不是“”,因为后者在 JSON 中无效。如果需要,您可以.replaceAll(...)在输入字符串上使用替换这些字符。
public class ReadCarFile {
public static final Gson gson = new GsonBuilder().registerTypeAdapter(Car.class, new CarTypeAdapter()).create();
public static void main(String[] args) {
String input = "{\"car\":{\"name\":\"Toyota\",\"vin\":637834623,\"location\":”SomePlace\"}}";
Car result = gson.fromJson(input, Car.class);
}
static class CarTypeAdapter implements JsonDeserializer<Car> {
@Override
public Car deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
JsonObject carObject = jsonElement.getAsJsonObject().get("car").getAsJsonObject();
Car car = new Car();
car.name = carObject.get("name").getAsString();
car.vin = carObject.get("vin").getAsInt();
car.location = carObject.get("location").getAsString();
return car;
}
}
static class Car {
@SerializedName("name")
public String name;
@SerializedName("vin")
public int vin;
@SerializedName("location")
public String location;
}
}
TA贡献1875条经验 获得超5个赞
这些数字不需要像上面提到的那样被引用,下面是有效的 JSON。使用像这里这样的 JSON linter将确认这一点。使用GSON或Jackson之类的包将其反序列化为您的 Java 应用程序可以轻松使用的 Car POJO。我个人喜欢 Jackson,尽管对于简单的使用来说它可能有点重量级。
{
"car": {
"name": "Toyota",
"vin": 637834623,
"location": "SomePlace"
}
}
添加回答
举报