1

我正在开发一个项目,该项目有一个围绕 java 代码的 python 包装器。因此,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中的一个dict,我们作为字符串传递给java代码。

java中是否有I库可以将python dict之类的字符串解析为java hash-map或等效的以便于遍历?

解决方案:

json解决方案有效。在 python 中使用 simplejson 将 dict 转换为 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);
    }
}
4

1 回答 1

1

我试过了,但我正在做类似的事情java -dname="TheAboveString"并通过 System.getProperty("name") 检索它,所以无法传递格式良好的 json .. – kmad 15 分钟前

...为什么将它作为系统属性传递?

只需管道输入 JSONecho "TheAboveString" | java并将其从标准输入转储到 JSON 解析器。使用subprocess模块应该更容易,安全。

于 2013-02-26T00:33:50.397 回答