猿问

Java读取文本文件以获取特定格式的值

我需要读取包含以下数据的文本文件:

{“汽车”:{“名称”:“丰田”,“vin”:637834623,“位置”:“SomePlace”}}

我需要获取名称、vin 和位置

我该怎么做呢?我想我可以尝试使用 JSON 来读取它,它会起作用吗?

谢谢


料青山看我应如是
浏览 138回答 2
2回答

慕莱坞森

这是一个使用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;    }}

慕田峪4524236

这些数字不需要像上面提到的那样被引用,下面是有效的 JSON。使用像这里这样的 JSON linter将确认这一点。使用GSON或Jackson之类的包将其反序列化为您的 Java 应用程序可以轻松使用的 Car POJO。我个人喜欢 Jackson,尽管对于简单的使用来说它可能有点重量级。{    "car": {        "name": "Toyota",        "vin": 637834623,        "location": "SomePlace"    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答