【发布时间】:2018-09-01 01:18:21
【问题描述】:
我需要从 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 类并使用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"}]
【问题讨论】:
-
这不是有效的 json 格式。它应该像 [{"key1": "value1","key2":"value2"}]
-
是的,我也试过了。空间重要吗?我在冒号前后放了空格
-
没有空格不会有任何区别,但引号会
-
你应该发送这样的输入 [{\"key1\":\"value1\",\"key2\":\"value2\"]} as java string
-
你的数据应该像 { "key1" : "value1", "key2" : "value2" } 在这里查看jsoneditoronline.org/?id=d8410952f64e88bd8296f0808c25ed50
标签: java json gson properties-file