我正在开发一个项目,它有一个围绕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中的一个字典,我们将字符串传递给java代码。
java中是否有一个库将python dict解析为java哈希映射或等效的python dict以便于遍历?
解决方案:
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);
}
}
答案 0 :(得分:1)
我试过了,但是我正在做类似
java -dname="TheAboveString"
的事情,并通过System.getProperty(“name”)重新审阅它,所以无法传递一个格式良好的json .. - kmad 15分钟前
...为什么要将它作为系统属性传递?
只需管道JSON echo "TheAboveString" | java
并将其从stdin转储到JSON解析器。使用subprocess模块,这应该更容易一些,并且 更安全。