@xtccc
2015-12-24T11:17:04.000000Z
字数 848
阅读 2200
Scala
我们在JSON的处理中,给出了遍历一个Json String中各个key-value的方法,如下:
public static void IterateJson(String json) {
JsonParser parser = new JsonParser();
JsonElement jsonElem = parser.parse(new StringReader(json));
JsonObject jsonObj = (JsonObject)jsonElem;
Set<Map.Entry<String, JsonElement>> ens = jsonObj.entrySet();
for (Map.Entry<String, JsonElement> en : ens) {
System.out.println(en.getKey() + " -> " + en.getValue());
}
}
以上代码是用Java写的,下面改为Scala:
def IterateJson(json:String) {
val parser:JsonParser = new JsonParser()
val jsonElem:JsonElement = parser.parse(new StringReader(json))
val jsonObj:JsonObject = jsonElem.asInstanceOf[JsonObject]
val ens = jsonObj.entrySet
for (en <- ens) {
println(en.getKey() + " -> " + en.getValue());
}
}
此时,会有编译错误:
en的getKey和getValue无法识别
这是因为Scala和Java中容器类型的差异造成的,实际上我们可以引入import collection.JavaConversions._
来对Scala的容器与Java的容器进行转换,可以参考Conversions Between Java and Scala Collections.