为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

料青山看我应如是 2023-06-21 09:02:14
我需要读取包含以下数据的文本文件:{“汽车”:{“名称”:“丰田”,“vin”:637834623,“位置”:“SomePlace”}}我需要获取名称、vin 和位置我该怎么做呢?我想我可以尝试使用 JSON 来读取它,它会起作用吗?谢谢
查看完整描述

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;


    }

}


查看完整回答
反对 回复 2023-06-21
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

这些数字不需要像上面提到的那样被引用,下面是有效的 JSON。使用像这里这样的 JSON linter将确认这一点。使用GSON或Jackson之类的包将其反序列化为您的 Java 应用程序可以轻松使用的 Car POJO。我个人喜欢 Jackson,尽管对于简单的使用来说它可能有点重量级。


{

    "car": {

        "name": "Toyota",

        "vin": 637834623,

        "location": "SomePlace"

    }

}


查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信