Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在liftjson中使用连接的jvalue_Json_Scala_Scala 2.8_Lift_Github Api - Fatal编程技术网

在liftjson中使用连接的jvalue

在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

使用Scala 2.8和Lift 2.2

我正在调用Github API并为用户请求存储库。当用户拥有少于30个repo时,会进行一次调用,并且不需要连接jvalue。但是,当用户拥有30多个回购协议时,会进行多次调用。我想连接这些调用的结果,然后将它们展平。i、 e.JValue上的存储库名称应返回所有回购协议,而不仅仅是前30个

下面的代码返回以下内容:ArrayListJObjectListJFieldrepositories,JArray…JObjectListJFieldrepositories,JArray

我想要的是:ArrayListJObjectListJFieldrepositories,JArray。。。。其中存储库名称指向所有回购协议

我已经挣扎了一段时间,但似乎无法得到它

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合并_