Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Json Kotlin klaxon解析谷歌方向Api_Json_Kotlin_Google Directions Api_Klaxon - Fatal编程技术网

Json Kotlin klaxon解析谷歌方向Api

Json Kotlin klaxon解析谷歌方向Api,json,kotlin,google-directions-api,klaxon,Json,Kotlin,Google Directions Api,Klaxon,对不起我的英语(谷歌翻译)。 我试图用Kotlin上的klaxon()从google directions的答案中得到两点之间的距离 fun distanceDier (start: LatLng, end: LatLng, mode: String) { val url = ("http://maps.googleapis.com/maps/api/directions/json?" + "origin=" + start.latitude + "," + s

对不起我的英语(谷歌翻译)。 我试图用Kotlin上的klaxon()从google directions的答案中得到两点之间的距离

 fun distanceDier (start: LatLng, end: LatLng, mode: String) {
    val url = ("http://maps.googleapis.com/maps/api/directions/json?"
            + "origin=" + start.latitude + "," + start.longitude
            + "&destination=" + end.latitude + "," + end.longitude
            + "&sensor=false&units=metric&mode=" + mode)
    val result = URL("$url").readText()
    val parser: Parser = Parser()
    val stringBuilder: StringBuilder = StringBuilder(result)
    val json: JsonObject = parser.parse(stringBuilder) as JsonObject
    println("distance : ${json.string("routes.legs.distance.text")},")
    println("$url") //test
设定点

 distanceDier(LatLng(53.402971, 91.083748),LatLng(53.529799, 91.410684),"TravelMode")
日志:

位置误差

val result = URL("$url").readText()
网址:

如何获取与Json文件的距离以及错误代码是什么?

fun distanceDier(开始:LatLng,结束:LatLng,模式:String){
 fun distanceDier (start: LatLng, end: LatLng, mode: String) {
val url = ("http://maps.googleapis.com/maps/api/directions/json?"
        + "origin=" + start.latitude + "," + start.longitude
        + "&destination=" + end.latitude + "," + end.longitude
        + "&sensor=false&units=metric&mode=" + mode)
//val result = URL(url).readText()
//an extension over string (support GET, PUT, POST, DELETE with httpGet(), httpPut(), httpPost(), httpDelete())
url.httpGet().responseString { request, response, result ->
    //do something with response
    when (result) {
        is Result.Failure -> {

        }
        is Result.Success -> {
            val res = result.value
            println("Result: $result")
            val parser: Parser = Parser()
            val stringBuilder: StringBuilder = StringBuilder(res)
            val json: JsonObject = parser.parse(stringBuilder) as JsonObject
            println("distance : ${json.lookup<String?>("routes.legs.distance.text")},")

        }
    }
}
}
val url=(“http://maps.googleapis.com/maps/api/directions/json?" +“origin=“+start.latitude+”,“+start.longitude” +“&destination=“+end.latitude+”,“+end.longitude” +“&sensor=false&units=metric&mode=“+mode”) //val result=URL(URL).readText() //字符串上的扩展(支持GET、PUT、POST、DELETE和httpGet()、httpPut()、httpPost()、httpDelete()) url.httpGet().responseString{request,response,result-> //做些有反应的事情 何时(结果){ 是结果。失败->{ } 这就是结果。成功->{ val res=结果值 println(“结果:$Result”) val parser:parser=parser() val stringBuilder:stringBuilder=stringBuilder(res) val json:JsonObject=parser.parse(stringBuilder)作为JsonObject println(“距离:${json.lookup(“routes.legs.distance.text”)},) } } } }
我使用的异步{distanceDier(LatLng(53.402971,91.083748),LatLng(53.529799,91.410684),“TravelMode”)}可能重复,但错误仍然存在。如果您不断得到
networkMainThreadException
,则这不是重复的问题,这仍然是相同的问题。请参阅我链接的问题以获得修复。如果异步不起作用,我建议阅读。它有一个很好的替代方案,再加上大量的解释,这是行不通的。如果您尝试,会出现以下错误,因为Klaxon和Fuel不能很好地配合
java.lang.ClassCastException:com.beust.Klaxon.JsonArray无法转换为java.lang.String
听起来像是一个数组,所以您应该调用
parser.parseArray(stringBuilder)
 fun distanceDier (start: LatLng, end: LatLng, mode: String) {
val url = ("http://maps.googleapis.com/maps/api/directions/json?"
        + "origin=" + start.latitude + "," + start.longitude
        + "&destination=" + end.latitude + "," + end.longitude
        + "&sensor=false&units=metric&mode=" + mode)
//val result = URL(url).readText()
//an extension over string (support GET, PUT, POST, DELETE with httpGet(), httpPut(), httpPost(), httpDelete())
url.httpGet().responseString { request, response, result ->
    //do something with response
    when (result) {
        is Result.Failure -> {

        }
        is Result.Success -> {
            val res = result.value
            println("Result: $result")
            val parser: Parser = Parser()
            val stringBuilder: StringBuilder = StringBuilder(res)
            val json: JsonObject = parser.parse(stringBuilder) as JsonObject
            println("distance : ${json.lookup<String?>("routes.legs.distance.text")},")

        }
    }
}
}