在liftjson中使用连接的jvalue
使用Scala 2.8和Lift 2.2 我正在调用Github API并为用户请求存储库。当用户拥有少于30个repo时,会进行一次调用,并且不需要连接jvalue。但是,当用户拥有30多个回购协议时,会进行多次调用。我想连接这些调用的结果,然后将它们展平。i、 e.JValue上的存储库名称应返回所有回购协议,而不仅仅是前30个 下面的代码返回以下内容:ArrayListJObjectListJFieldrepositories,JArray…JObjectListJFieldrepositories,JArray 我想要的是:ArrayListJObjectListJFieldrepositories,JArray。。。。其中存储库名称指向所有回购协议 我已经挣扎了一段时间,但似乎无法得到它在liftjson中使用连接的jvalue,json,scala,scala-2.8,lift,github-api,Json,Scala,Scala 2.8,Lift,Github Api,使用Scala 2.8和Lift 2.2 我正在调用Github API并为用户请求存储库。当用户拥有少于30个repo时,会进行一次调用,并且不需要连接jvalue。但是,当用户拥有30多个回购协议时,会进行多次调用。我想连接这些调用的结果,然后将它们展平。i、 e.JValue上的存储库名称应返回所有回购协议,而不仅仅是前30个 下面的代码返回以下内容:ArrayListJObjectListJFieldrepositories,JArray…JObjectListJFieldreposit
import java.io._
import net.liftweb.json.JsonAST._
import net.liftweb.json.JsonParser._
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.{ DefaultHttpClient }
object Github extends Application {
implicit val formats = net.liftweb.json.DefaultFormats
val client = new DefaultHttpClient()
var repos = JArray(List[JValue]())
//Pick on mojombo since he has 30+ repos requires to calls to API
var method = new HttpGet("http://github.com/api/v2/json/repos/show/" + "mojombo" + "?page=1")
var response = client.execute(method)
var instream = response.getEntity.getContent();
var reader = new BufferedReader(new InputStreamReader(instream))
var line1 = reader.readLine
method = new HttpGet("http://github.com/api/v2/json/repos/show/" + "mojombo" + "?page=2")
response = client.execute(method)
instream = response.getEntity.getContent();
reader = new BufferedReader(new InputStreamReader(instream))
val line2 = reader.readLine
println(parse(line1) ++ parse(line2))
}
函数“merge”应该像您描述的那样合并这些JSON:
parse(line1) merge parse(line2)
或者更一般地说:
List(json1, json2, ...).foldLeft(JNothing: JValue)(_ merge _)
函数“merge”应该像您描述的那样合并这些JSON:
parse(line1) merge parse(line2)
或者更一般地说:
List(json1, json2, ...).foldLeft(JNothing: JValue)(_ merge _)
啊。谢谢你。没有看到合并对象和方法。上面是一个简单的例子,一个人的回购协议在30到60之间,合并效果很好。对于一般情况,我必须解析和合并n个repo。有没有一种方法可以在JArray或JField中累积这些内容,并且仍然有一个存储库关键点来指向所有repo,如parseline1合并parseline2返回?一种可能是将这些JSON收集到一个列表中,并将其折叠起来:Listjson1、json2、json3等等。谢谢你。没有看到合并对象和方法。上面是一个简单的例子,一个人的回购协议在30到60之间,合并效果很好。对于一般情况,我必须解析和合并n个repo。有没有一种方法可以在JArray或JField中累积这些内容,并且仍然有一个存储库关键点指向所有repo,如parseline1合并parseline2返回?一种可能是将这些JSON收集到一个列表中,并将其折叠起来:Listjson1、json2、json3等等。foldLeftJNothing:JValue_uu合并_