我是斯卡拉的新手。我正在尝试将JSON转换为有序的Map,它应该具有插入顺序的值。但编译器说我只能转换为Map,而不能转换为ListMap,并要求我实现隐式Read或格式。
但我想知道有没有什么方法可以直接使用一些现有函数,因为我们有JSON到Map转换?我还检查了SprayJson和其他的选项,但看起来没有现有的JSON函数可用于有序集合。
if ($(window).scrollTop() == ($(document).height() - $(window).height())){
ready=false;
$.ajax({
url: "/home/scroll/loadcontent/",
method: "get",
data: {
posts: str
},
dataType: "json",
success: function(response) {
$("#col1").children('#tiles').append(response.col1);
$("#col1").children('#tiles').append(response.col4);
$("#col2").children('#tiles').append(response.col2);
$("#col2").children('#tiles').append(response.col5);
$("#col3").children('#tiles').append(response.col3);
$("#col3").children('#tiles').append(response.col6);
}
})
.always(function(){
ready = true; //Reset the flag here
});
}
window.onscroll=yHandler
答案 0 :(得分:0)
Json对象的键没有排序,因此Json对象的键,值可以按任何顺序重试,因此不能保证订购。 仅在不在对象中的数组中维护排序。所以你必须将Json对象更改为Json数组才能实现这一点,如下所示
scala> import scala.collection.immutable.ListMap
import scala.collection.immutable.ListMap
scala> import play.api.libs.json._
import play.api.libs.json._
scala> val jsonString = """[{"F1":{"A" : "a"}}, {"F2":{"B" : "b"}}, {"F3":{"C" : "c"}}, {"F4":{"D" : "d"}}, {"F5":{"E" : "e"}}]"""
jsonString: String = [{"F1":{"A" : "a"}}, {"F2":{"B" : "b"}}, {"F3":{"C" : "c"}}, {"F4":{"D" : "d"}}, {"F5":{"E" : "e"}}]
scala> val list = Json.parse(jsonString).as[List[Map[String, Map[String, String]]]].flatten.foldLeft(ListMap[String,Map[String, String]]())({ case (arr,(key, value)) => arr + (key -> value)})
list: scala.collection.immutable.ListMap[String,Map[String,String]] = Map(F1 -> Map(A -> a), F2 -> Map(B -> b), F3 -> Map(C -> c), F4 -> Map(D -> d), F5 -> Map(E -> e))