将Python字典样式字符串转换为Java HashMap
我正在做一个项目,这个项目里有一层用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 模块会安全得多。