【问题标题】:Parse Json from Java properties file using gson library使用 gson 库从 Java 属性文件中解析 Json
【发布时间】: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


【解决方案1】:

你在这里使用的Javadoc of JsonPrimitive

JsonElement element = new JsonPrimitive(jsonArray);

状态

创建一个包含字符串值的原语。

当你这样做时

JsonArray array = element.getAsJsonArray();

它显然会失败,因为element 是一个 JSON 字符串,而不是一个 JSON 数组。直接解析JSON即可

JsonArray array = new Gson().fromJson(jsonArray, JsonArray.class)

这是在您将属性文件内容更改为实际 JSON 之后的全部内容

jsonarray = [ { "key1" : "value1", "key2" : "value2" } ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多