将Python字典样式字符串转换为Java HashMap

1 投票
1 回答
2425 浏览
提问于 2025-04-17 17:07

我正在做一个项目,这个项目里有一层用Python包裹Java代码的部分。所以,Python和Java之间有通信。(我知道有Jython这个东西,但我们想把每种实现保持独立。)

为了让Python能和Java交流,我们会传一个字符串,比如

{
    "1-1": {
        "Max Capacity (MB)": "393216",
        "Current Capacity (MB)": "24576",
        "Max Devices": "12",
        "Populated": "12"
    },
    "1-3": {
        "Max Capacity (MB)": "262144",
        "Current Capacity (MB)": "8192",
        "Max Devices": "32",
        "Populated": "2"
    },
    "1-2": {
        "Max Capacity (MB)": "393216",
        "Current Capacity (MB)": "4096",
        "Max Devices": "12",
        "Populated": "1"
    }
}

这个字符串在Python中是一个字典,我们把它作为字符串传给Java代码。

请问在Java中有没有库可以把像Python字典那样的字符串解析成Java的哈希表(hash-map)或者类似的东西,这样方便遍历呢?

解决方案:

使用json的方法有效。我们在Python中用simplejson把字典转换成json格式,然后在Java中用gson库。下面是Java部分的代码:

import java.util.Map;
import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class ReadFromJson {
    public static void main(String args[]) {
        Type mapOfStringObjectType = new TypeToken<Map<String, Map<String,String>>>() {}.getType();
        Gson gson = new Gson();
        Map<String, Map<String,String>> obj = gson.fromJson(jsonStringToBeRead, mapOfStringObjectType);
        System.out.println(obj);
    }
}

1 个回答

1

我试过这样做,但我用的是 java -dname="TheAboveString",然后通过 System.getProperty("name") 来获取,所以没法传递一个格式正确的 JSON。– kmad 15分钟前

...那你为什么要把它当作系统属性传递呢?

不如直接把 JSON 输入到程序里,像这样 echo "TheAboveString" | java,然后从标准输入(stdin)传递给一个 JSON 解析器。这样做会简单一些,而且使用 subprocess 模块会安全得多。

撰写回答