Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
Android 使用JSON解析地震信息_Android_Json_Geojson - Fatal编程技术网

Android 使用JSON解析地震信息

Android 使用JSON解析地震信息,android,json,geojson,Android,Json,Geojson,我试图从中解析地震坐标并在文本视图中显示它。但它不起作用。。。文本视图不显示任何内容,并保持空白。。这是我的代码: 包com.googlemaps import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.htt

我试图从中解析地震坐标并在文本视图中显示它。但它不起作用。。。文本视图不显示任何内容,并保持空白。。这是我的代码:

包com.googlemaps

import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class Json extends Activity  {

TextView txtJson;
HttpClient client;
JSONObject json;
String data;

final static String URL = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/";


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.json);
txtJson = (TextView) findViewById(R.id.txtJson);
client = new DefaultHttpClient();
new Read().execute("features");
}

public JSONObject earthquake(String magnitude) throws ClientProtocolException, IOException, JSONException{

StringBuilder url = new StringBuilder(URL);
url.append(magnitude);
HttpGet get = new HttpGet(url.toString());
HttpResponse response =  client.execute(get);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200){
     HttpEntity ent = response.getEntity();
     String data= EntityUtils.toString(ent);

     JSONObject main_obj = new JSONObject(data);
     JSONArray list = main_obj.getJSONArray("features");
     JSONObject latest = list.getJSONObject(0);
     JSONObject geometry_obj = latest.getJSONObject("geometry");

    return geometry_obj;
}

Toast.makeText(this,"failed" , Toast.LENGTH_SHORT).show();
return null;

}
public class Read extends AsyncTask<String, Integer, String>{

@Override
protected String doInBackground(String... arg0) {
    // TODO Auto-generated method stub
    String re = "";
    try {

        StringBuilder stringBuilder = new StringBuilder();
        json = earthquake("4.5_day.geojson");
        JSONArray coordinates_array = json.getJSONArray("coordinates");
        for(int i = 0; i < coordinates_array.length(); i++){
           stringBuilder.append("Some text"coordinates_array.getString(i));
        }
        re = stringBuilder.toString();
        return re;
    }
    finally{}
}
@Override
protected void onPostExecute(String result) {
    // TODO Auto-generated method stub
    txtJson.setText(result);

}    
}

}
import java.io.IOException;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.util.EntityUtils;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.widget.TextView;
导入android.widget.Toast;
公共类Json扩展活动{
TextView-txtJson;
HttpClient;
JSONObject json;
字符串数据;
最终静态字符串URL=”http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.json);
txtJson=(TextView)findViewById(R.id.txtJson);
client=新的DefaultHttpClient();
新建读取()。执行(“功能”);
}
公共JSONObject地震(字符串震级)抛出ClientProtocolException、IOException、JSONException{
StringBuilder url=新的StringBuilder(url);
url.append(数量级);
HttpGet=newhttpget(url.toString());
HttpResponse response=client.execute(get);
int statusCode=response.getStatusLine().getStatusCode();
如果(状态代码==200){
HttpEntity ent=response.getEntity();
字符串数据=EntityUtils.toString(ent);
JSONObject main_obj=新的JSONObject(数据);
JSONArray list=main_obj.getJSONArray(“特性”);
JSONObject latest=list.getJSONObject(0);
JSONObject geometry_obj=最新的.getJSONObject(“geometry”);
返回几何体_obj;
}
Toast.makeText(这个“失败”,Toast.LENGTH_SHORT).show();
返回null;
}
公共类读取扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//TODO自动生成的方法存根
字符串re=“”;
试一试{
StringBuilder StringBuilder=新的StringBuilder();
json=地震(“4.5_day.geojson”);
JSONArray coordinates_array=json.getJSONArray(“坐标”);
对于(int i=0;i
这是XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
    android:id="@+id/txtJson"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Loading Data..."
    android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>

这是我的logcat数据:

02-08 04:23:58.908: I/Choreographer(2559): Skipped 91 frames!  The application may be doing too much work on its main thread.
02-08 04:23:59.228: I/Choreographer(2559): Skipped 301 frames!  The application may be doing too much work on its main thread.
02-08 04:24:24.608: I/Choreographer(2559): Skipped 77 frames!  The application may be doing too much work on its main thread.
02-08 04:24:26.398: D/dalvikvm(2559): GC_FOR_ALLOC freed 375K, 14% free 3060K/3536K, paused 92ms, total 92ms
02-08 04:24:26.498: W/System.err(2559): org.json.JSONException: Value {"features":   [{"id":"usc000mkv5","type":"Feature","geometry":{"type":"Point","coordinates":[159.5419,-9.7067,41.51]},"properties":{"detail":"http:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/detail\/usc000mkv5.geojson","type":"earthquake","net":"us","tsunami":null,"sources":",us,","title":"M 5.1 - 54km SW of Honiara, Solomon    Islands","time":1391838013570,"updated":1391843853000,"mag":5.1,"types":",cap,dyfi,geoserve,nearby-cities,origin,phase-data,tectonic-summary,","place":"54km SW of Honiara, Solomon Islands","status":"reviewed","ids":",usc000mkv5,","alert":null,"rms":0.59,"code":"c000mkv5","url":"http:\/\/earthquake.usgs.gov\/earthquakes\/eventpage\/usc000mkv5","magType":"mb","mmi":null,"cdi":1,"tz":660,"felt":0,"nst":null,"dmin":9.404,"gap":94,"sig":400}},{"id":"usc000mktr","type":"Feature","geometry":{"type":"Point","coordinates":[141.0819,37.092,54.23]},"properties":{"detail":"http:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/detail\/usc000mktr.geojson","type":"earthquake","net":"us","tsunami":null,"sources":",us,","title":"M 5.0 - 18km ENE of Iwaki, Japan","time":1391826863590,"updated":1391828049000,"mag":5,"types":",cap,dyfi,general-link,geoserve,nearby-cities,origin,phase-data,tectonic-summary,","place":"18km ENE of Iwaki, Japan","status":"reviewed","ids":",usc000mktr,","alert":null,"rms":0.72,"code":"c000mktr","url":"http:\/\/earthquake.usgs.gov\/earthquakes\/eventpage\/usc000mktr","magType":"mb","mmi":null,"cdi":1,"tz":540,"felt":0,"nst":null,"dmin":2.369,"gap":123,"sig":385}},{"id":"usc000mksz","type":"Feature","geometry":{"type":"Point","coordinates":[54.2342,39.8122,10.69]},"properties":{"detail":"http:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/detail\/usc000mksz.geojson","type":"earthquake","net":"us","tsunami":null,"sources":",us,","title":"M 4.6 - 35km NNW of Balkanabat, Turkmenistan","time":1391821880490,"updated":1391850827048,"mag":4.6,"types":",cap,dyfi,geoserve,nearby-cities,origin,phase-data,tectonic-summary,","place":"35km NNW of Balkanabat, Turkmenistan","status":"reviewed","ids":",usc000mksz,","alert":null,"rms":1.36,"code":"c000mksz","url":"http:\/\/earthquake.usgs.gov\/earthquakes\/eventpage\/usc000mksz","magType":"mb","mmi":null,"cdi":null,"tz":300,"felt":null,"nst":null,"dmin":3.566,"gap":53,"sig":326}},{"id":"usc000mkir","type":"Feature","geometry":{"type":"Point","coordinates":[-72.9583,6.7107,157.61]},"properties":{"detail":"http:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/detail\/usc000mkir.geojson","type":"earthquake","net":"us","tsunami":null,"sources":",us,","title":"M 5.4 - 7km ENE of Aratoca, Colombia","time":1391805430940,"updated":1391822811919,"mag":5.4,"types":",cap,dyfi,general-link,geoserve,losspager,nearby-cities,origin,phase-data,shakemap,tectonic-summary,","place":"7km ENE of Aratoca, Colombia","status":"reviewed","ids":",usc000mkir,","alert":"green","rms":0.86,"code":"c000mkir","url":"http:\/\/earthquake.usgs.gov\/earthquakes\/eventpage\/usc000mkir","magType":"mb","mmi":4.02,"cdi":5,"tz":-300,"felt":151,"nst":null,"dmin":2.292,"gap":23,"sig":524}},{"id":"usc000mkes","type":"Feature","geometry":{"type":"Point","coordinates":[-179.784,-23.2075,544.06]},"properties":{"detail":"http:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/detail\/usc000mkes.geojson","type":"earthquake","net":"us","tsunami":null,"sources":",us,","title":"M 4.8 - South of the Fiji Islands","time":1391797565060,"updated":1391826517121,"mag":4.8,"types":",cap,dyfi,geoserve,nearby-cities,origin,phase-data,tectonic-summary,","place":"South of the Fiji Islands","status":"reviewed","ids":",usc000mkes,","alert":null,"rms":0.94,"code":"c000mkes","url":"http:\/\/earthquake.usgs.gov\/earthquakes\/eventpage\/usc000mkes","magType":"mb","mmi":null,"cdi":null,"tz":-720,"felt":null,"nst":null,"dmin":5.8,"gap":111,"sig":354}},{"id":"usc000mkcq","type":"Feature","geometry":{"type":"Point","coordinates":[141.3575,37.607,63.17]},"properties":{"detail":"http:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/detail\/usc000mkcq.geojson","ty
02-08 04:24:26.508: W/System.err(2559):     at org.json.JSON.typeMismatch(JSON.java:111)
02-08 04:24:26.518: W/System.err(2559):     at org.json.JSONArray.<init>(JSONArray.java:96)
02-08 04:24:26.518: W/System.err(2559):     at org.json.JSONArray.<init>(JSONArray.java:108)
02-08 04:24:26.528: W/System.err(2559):     at com.googlemaps.Json.earthquake(Json.java:50)
02-08 04:24:26.528: W/System.err(2559):     at com.googlemaps.Json$Read.doInBackground(Json.java:66)
02-08 04:24:26.528: W/System.err(2559):     at com.googlemaps.Json$Read.doInBackground(Json.java:1)
02-08 04:24:26.548: W/System.err(2559):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
02-08 04:24:26.548: W/System.err(2559):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-08 04:24:26.548: W/System.err(2559):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
02-08 04:24:26.548: W/System.err(2559):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-08 04:24:26.558: W/System.err(2559):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-08 04:24:26.558: W/System.err(2559):     at java.lang.Thread.run(Thread.java:841)
02-08 04:23:58.908:I/编舞(2559):跳过91帧!应用程序可能在其主线程上做了太多工作。
02-08 04:23:59.228:I/编舞(2559):跳过了301帧!应用程序可能在其主线程上做了太多工作。
02-08 04:24:24.608:I/编舞(2559):跳过77帧!应用程序可能在其主线程上做了太多工作。
02-08 04:24:26.398:D/dalvikvm(2559):释放375K,14%释放3060K/3536K,暂停92ms,总计92ms
02-08 04:24:26.498:W/System.err(2559):org.json.JSONException:Value{“features”:[{“id”:“usc000mkv5”,“type”:“Feature”,“geometry”:{“type”:“Point”,“coordinates”:[159.5419,-9.7067,41.51],“properties”:{“detail”:“http:\/\/search.usgs.gov\/sequestions\/feed\/v1.0\/detail\/usc000mkv5.geojson”,“type”:“地震”,“net”:“us”,“海啸”:null,“资料来源”:“美国”,“标题”:“所罗门群岛霍尼亚拉西南5.1-54公里”,“时间”:1391838013570,“更新”:1391843853000,“mag”:5.1,“类型”:“cap、dyfi、地球观测、附近城市、起源、阶段数据、构造摘要”,“地点”:“所罗门群岛霍尼亚拉西南54公里”,“状态”:“已审查”,“ID”:“USC0000MKV5”,“警报”:null,“rms”:0.59,“代码”:“C000MV5”,“url”:http:\/\/sequence.usgs.gov\/sequences\/eventpage\/usc000mkv5,“magType”:“mb”,“mmi”:null,“cdi”:1,“tz”:660,“feel”:0,“nst”:null,“dmin”:9.404,“gap”:94,“sig”:400},{“id”:“usc000mktr”,“type”:“Feature”,“geometry”:{“type”:“Point”,“座标”:[141.0819,37.092,54.23]},“properties”:{“detail”:”http:\/\/sequence.usgs.gov\/sequences\/feed\/v1.0\/detail\/usc000mktr.geojson,“类型”:“地震”,“网络”:“美国”,“海啸”:空,“来源”:“美国”,“标题”:“日本磐城东北5.0-18km”,“时间”:1391826863590,“更新”:1391828049000,“mag”:5,“类型”:“cap,dyfi,通用链接,地球观测,附近城市,起源,阶段数据,构造概要”,“地点”:日本岩崎市东北18公里处,“状态”:“已审查”,“ids”:“USC0000MKTR”,“警报”:null,“rms”:0.72,“代码”:“c000mktr”,“url”:“http:\/\/sequence.usgs.gov\/sequences\/eventpage\/USC0000MKTR”,“magType”:“mb”,“mmi”:null,“cdi”:1,“tz”:540,“FEEL”:0,“nst”:null,“dmin”:2.369,“gap”:123,“sig”:385},{“id”:“USC0000MKSZ”,“类型”:“特征”,“几何图形”:“点”坐标“[54.2342,39.8122,10.69],“属性”:{“详细信息”:“http:\/\/sequence.usgs.gov\/sequences\/feed\/v1.0\/detail\/usc000mksz.geojson”,“类型”:“地震”,“网络”:“美国”,“海啸”:空,“来源”:“美国”,“美国”,“标题”:“土库曼斯坦巴尔干巴特北纬4.6-35公里”,“时间”:1391821880490,“更新”:1391850827048,“mag”:4.6,“类型”:,cap,dyfi,geoserve,附近城市,起源,阶段数据,构造概要,,“地点:”,“土库曼斯坦巴尔干阿巴特西北35公里,”,“状态:”,“已审查”,“ids:”,“USC0000MKSZ,”,“警报:”,“无效”,rms:“1.36”,代码:“:“C000MsZ”,“url:“http:\/\/地震.usgs.gov\/地震\/事件页\/USC0000MKSZ”,“magType:“mb”,“mmi:”,“无效”,cdi:“无效”,tz:“300”,“Feel:“无效”,nst:“无效”,dmin“:3.566,“gap”:53,“sig”:326},{“id”:“usc000mkir”,“type”:“Feature”,“geometry”:{“type”:“Point”,“coordinates”:[-72.9583,6.7107157.61],“properties”:{“detail”:“http:\/\/search.usgs.gov\/seasures\/feed\/v1.0\/detail\/usc000mkir.geojson”,“type”:“地震”,“net”:“us”:“us”,“海啸”:null,“sources”:“us”;“us”;“title”:“M 5.4-7km”
if (statusCode == 200){
     HttpEntity ent = response.getEntity();
     String data= EntityUtils.toString(ent);

     JSONObject main_obj = new JSONObject(data);
     JSONArray list = main_obj.getJSONArray("features");
     JSONObject latest = list.getJSONObject(0);
     JSONObject geometry_obj = latest.getJSONObject("geometry");

    return geometry_obj;
}
String re = "";
try {

    StringBuilder stringBuilder = new StringBuilder();
    json = earthquake("4.5_day.geojson");
    JSONArray coordinates_array = json.getJSONArray("coordinates");
    for(int i = 0; i < coordinates_array.length(); i++){
       stringBuilder.append(coordinates_array.getString(i)+",");
    }
    re = stringBuilder.toString();
    return re;
}