You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gson库解析Java Properties文件中的JSON数组

解决Gson解析Properties中JSON数组的问题

我来帮你搞定这个解析问题,咱们一步步排查和解决:

1. 先修正Properties里的JSON格式

你当前Properties里的JSON写法不符合标准JSON规范——JSON的键必须用双引号包裹,字符串类型的值也需要双引号(数字、布尔值不用)。原内容要改成这样:

jsonarray = [ { "key1" : "value1", "key2" : "value2" } ]
如果value1/value2是数字,比如123,那可以不用双引号,写成"key1": 123就行。

2. 用Gson正确解析JSON数组字符串

你之前用JsonPrimitive的方式不对,因为JsonPrimitive是用来包装单个基本类型的(比如单个字符串、数字),而JSON数组是复合结构,得用JsonParser把整个字符串解析成JsonArray,再遍历提取值。

给你完整的可运行代码示例:

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class JsonArrayFromProperties {
    public static void main(String[] args) {
        Properties properties = new Properties();
        String filePath = "your_config.properties"; // 替换成你的Properties文件路径
        
        try {
            properties.load(new FileInputStream(filePath));
            String jsonArrayStr = properties.getProperty("jsonarray");
            
            // 解析JSON数组字符串
            JsonElement rootElement = JsonParser.parseString(jsonArrayStr);
            if (rootElement.isJsonArray()) {
                JsonArray jsonArray = rootElement.getAsJsonArray();
                
                // 遍历数组里的每个JSON对象
                for (JsonElement itemElement : jsonArray) {
                    if (itemElement.isJsonObject()) {
                        JsonObject itemObj = itemElement.getAsJsonObject();
                        
                        // 提取对应键的值,记得先判断键是否存在避免空指针
                        if (itemObj.has("key1")) {
                            String key1Val = itemObj.get("key1").getAsString();
                            System.out.println("key1的值:" + key1Val);
                        }
                        if (itemObj.has("key2")) {
                            String key2Val = itemObj.get("key2").getAsString();
                            System.out.println("key2的值:" + key2Val);
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 常见坑点排查

  • 格式问题:如果还是解析失败,先检查JSON字符串有没有多余的空格或者转义问题——Properties里如果JSON有特殊字符,可能需要转义,但你的场景里只要保证双引号正确就没问题。
  • 空值处理:如果Properties里的jsonarray键不存在,getProperty会返回null,记得加非空判断,比如if (jsonArrayStr != null)再去解析。
  • Gson版本:确保你用的是较新的Gson版本(比如2.8+),旧版本的JsonParser用法可能不一样(比如旧版用new JsonParser().parse(),新版推荐JsonParser.parseString())。

内容的提问来源于stack exchange,提问作者Nagabhushan S N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:28:26