使用 gson 库从 Java 属性文件解析 Json
Parse Json from Java properties file using gson library
我需要从 java 属性文件中读取并解析 json 数组。我能够读取属性文件并获取 json 数组字符串。但是我无法解析 json 数组并获取值。我正在使用 gson 库。这是来自属性文件的数据
jsonarray = [ { key1 : value1, key2 : value2 } ]
代码:
Properties properties = new Properties();
properties.load(new FileInputStream(filePath));
String jsonArray = properties.getProperty("jsonarray")
JsonElement element = new JsonPrimitive(jsonArray);
JsonArray array = element.getAsJsonArray();
我收到 IllegalStateException
java.lang.IllegalStateException: Not a JSON Array: "[ { key1 : value1, key2 : value2 } ]"
问题是它在开头和结尾处使用了额外的双引号。
我试过为键和值添加引号,但没有成功。我需要使用 gson 库本身,所以请不要建议其他库。我不能为它创建一个 POJO class 并使用 new Gson().fromJson(jsonArray)
,所以请不要也这样建议。
我搜索并尝试了很多都没有成功。我提到的方法是 here
提前致谢
编辑 1:我在属性文件中尝试了以下内容
jsonarray = [ { "key1" : "value1", "key2" : "value2" } ]
我遇到了同样的异常,比如
java.lang.IllegalStateException: Not a JSON Array: "[ { \"key1\" : \"value1\", \"key2\" : \"value2\" } ]"
我尝试在代码中创建一个 JsonArray 对象并打印它
JsonArray array = new JsonArray();
JsonObject object = new JsonObject();
object.addProperty("key1", "value1");
object.addProperty("key2", "value2");
array.add(object);
System.out.println(array.toString());
输出如下
[{"key1":"value1","key2":"value2"}]
您在此处使用的 Javadoc of JsonPrimitive
JsonElement element = new JsonPrimitive(jsonArray);
州
Create a primitive containing a String value.
当你做
JsonArray array = element.getAsJsonArray();
它显然会失败,因为 element
是一个 JSON 字符串,而不是 JSON 数组。直接解析 JSON
JsonArray array = new Gson().fromJson(jsonArray, JsonArray.class)
这是您将属性文件内容更改为实际内容后的全部内容JSON
jsonarray = [ { "key1" : "value1", "key2" : "value2" } ]
我需要从 java 属性文件中读取并解析 json 数组。我能够读取属性文件并获取 json 数组字符串。但是我无法解析 json 数组并获取值。我正在使用 gson 库。这是来自属性文件的数据
jsonarray = [ { key1 : value1, key2 : value2 } ]
代码:
Properties properties = new Properties();
properties.load(new FileInputStream(filePath));
String jsonArray = properties.getProperty("jsonarray")
JsonElement element = new JsonPrimitive(jsonArray);
JsonArray array = element.getAsJsonArray();
我收到 IllegalStateException
java.lang.IllegalStateException: Not a JSON Array: "[ { key1 : value1, key2 : value2 } ]"
问题是它在开头和结尾处使用了额外的双引号。
我试过为键和值添加引号,但没有成功。我需要使用 gson 库本身,所以请不要建议其他库。我不能为它创建一个 POJO class 并使用 new Gson().fromJson(jsonArray)
,所以请不要也这样建议。
我搜索并尝试了很多都没有成功。我提到的方法是 here
提前致谢
编辑 1:我在属性文件中尝试了以下内容
jsonarray = [ { "key1" : "value1", "key2" : "value2" } ]
我遇到了同样的异常,比如
java.lang.IllegalStateException: Not a JSON Array: "[ { \"key1\" : \"value1\", \"key2\" : \"value2\" } ]"
我尝试在代码中创建一个 JsonArray 对象并打印它
JsonArray array = new JsonArray();
JsonObject object = new JsonObject();
object.addProperty("key1", "value1");
object.addProperty("key2", "value2");
array.add(object);
System.out.println(array.toString());
输出如下
[{"key1":"value1","key2":"value2"}]
您在此处使用的 Javadoc of JsonPrimitive
JsonElement element = new JsonPrimitive(jsonArray);
州
Create a primitive containing a String value.
当你做
JsonArray array = element.getAsJsonArray();
它显然会失败,因为 element
是一个 JSON 字符串,而不是 JSON 数组。直接解析 JSON
JsonArray array = new Gson().fromJson(jsonArray, JsonArray.class)
这是您将属性文件内容更改为实际内容后的全部内容JSON
jsonarray = [ { "key1" : "value1", "key2" : "value2" } ]