使用gson库从Java属性文件解析Json
我需要从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();
我被判非法
java.lang.IllegalStateException: Not a JSON Array: "[ { key1 : value1, key2 : value2 } ]"
问题是它在开始和结束时都需要额外的双引号
我曾尝试在键和值中添加引号,但没有成功。我需要使用gson库本身,所以请不要建议其他库。我不能为它创建POJO类并使用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"}]
# 1 楼答案
你在这里使用的Javadoc of ^{}
州
当你这样做的时候
它显然会失败,因为
element
是一个JSON字符串,而不是JSON数组。直接解析JSON即可这一切都是在您将属性文件内容更改为实际JSON之后发生的