Java 读取文本文件以获取特定格式的值
Java Read Textfile to get values in certain format
我需要读取包含以下数据的文本文件:
{“car”:{“name”:”Toyota”,”vin”:637834623,”location”:”SomePlace”}}
我需要获取名称、vin 和位置
我该怎么做?
我在想我可以尝试使用 JSON 阅读它,它会起作用吗?
谢谢
上面的数字不需要加引号,下面是有效的JSON。使用像 here will confirm that. Use a package like GSON or Jackson 这样的 JSON linter 将其反序列化为您的 Java 应用程序可以轻松使用的 Car POJO。我个人比较喜欢Jackson,虽然对于简单的使用来说可能有点重量级。
{
"car": {
"name": "Toyota",
"vin": 637834623,
"location": "SomePlace"
}
}
这是一个使用 GSON(google 的 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;
}
}
我需要读取包含以下数据的文本文件:
{“car”:{“name”:”Toyota”,”vin”:637834623,”location”:”SomePlace”}}
我需要获取名称、vin 和位置
我该怎么做? 我在想我可以尝试使用 JSON 阅读它,它会起作用吗?
谢谢
上面的数字不需要加引号,下面是有效的JSON。使用像 here will confirm that. Use a package like GSON or Jackson 这样的 JSON linter 将其反序列化为您的 Java 应用程序可以轻松使用的 Car POJO。我个人比较喜欢Jackson,虽然对于简单的使用来说可能有点重量级。
{
"car": {
"name": "Toyota",
"vin": 637834623,
"location": "SomePlace"
}
}
这是一个使用 GSON(google 的 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;
}
}