Java Android截击JSON解析
我试图从服务器获取数据并在ListView中显示它,但它在这里不起作用,我使用的是Volley库。我正在寻找截击代码,但我找不到,所以我可以得到与此对应的代码吗Java Android截击JSON解析,java,android,json,android-volley,Java,Android,Json,Android Volley,我试图从服务器获取数据并在ListView中显示它,但它在这里不起作用,我使用的是Volley库。我正在寻找截击代码,但我找不到,所以我可以得到与此对应的代码吗 JSONParse.java: import android.util.Log; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.StatusLine; import org.apache.htt
JSONParse.java
:
import android.util.Log;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.client.HttpClient;
import org.json.JSONException;
public class JSONParse {
static InputStream iStream=null;
static JSONArray jarray=null;
static String json="";
public JSONParse(){
}
public JSONArray getJSONFromUrl(String url){
StringBuilder builder=new StringBuilder();
HttpClient client=new DefaultHttpClient();
//------------J.G-----------------
/*HttpClient client=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(url);
httpGet.setHeader("Content-Type", "application/json");
httpGet.setHeader("jwttoken", "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJFUk0iLCJpc3MiOiJFUk0iLCJpYXQiOjE0MzM2OTczMjd9.2zd4OlKjW3Yfcd_q2FOoyEGpNrFbf7EuHeIkZ8ponr0");*/
try {
HttpGet httpGet=new HttpGet(url);
httpGet.setHeader("Content-Type", "application/json");
httpGet.setHeader("jwttoken", "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJFUk0iLCJpc3MiOiJFUk0iLCJpYXQiOjE0MzM2OTczMjd9.2 zd4OlKjW3Yfcd_q2FOoyEGpNrFbf7EuHeIkZ8ponr0");
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
Log.e("==>", "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
jarray= new JSONArray(builder.toString());
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data"+ e.toString());
}
return jarray;
}
}
按如下方式实现代码:
public void getData(){
//Showing a progress dialog
final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(Request.Method.POST, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
loading.dismiss();
parseData(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
Log.d("Json Error:",error.toString());
}
});
//Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(jsonObjectRequest);
}
public void parseData(JSONObject object){
try {
JSONArray jsonArray=object.getJSONArray("worldpopulation");
Log.d("Json Array:", jsonArray.toString());
for (int i=0;i<jsonArray.length();i++){
Data data=new Data();
JSONObject obj;
try {
obj=jsonArray.getJSONObject(i);
data.setImageUrl(obj.getString("flag"));
data.setName(obj.getString("country"));
data.setRank(obj.getString("rank"));
data.setPopulation(obj.getString("population"));
items.add(data);
}
catch (JSONException e){
Log.d("Error in Parse Object:", e.toString());
}
}
} catch (JSONException e) {
Log.d("Error in parse Array:", e.toString());
}
mAdapter = new MyAdapter(items,this);
mRecyclerView.setAdapter(mAdapter);
}
public void getData(){
//显示进度对话框
final ProgressDialog loading=ProgressDialog.show(这是“正在加载数据”,“请稍候…”,false,false);
JsonObjectRequest JsonObjectRequest=新JsonObjectRequest
(Request.Method.POST,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
loading.dispose();
解析数据(响应);
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//TODO自动生成的方法存根
Log.d(“Json错误:,Error.toString());
}
});
//创建请求队列
RequestQueue RequestQueue=Volley.newRequestQueue(this);
//将请求添加到队列
add(jsonObjectRequest);
}
公共空解析数据(JSONObject对象){
试一试{
JSONArray JSONArray=object.getJSONArray(“世界人口”);
d(“Json数组:”,jsonArray.toString());
对于(int i=0;i不确定这是否是您想要的:
下面是我如何使用截取来解析Json数据。
假设url代表以下Json数据:
[
{
“姓名”:“Ravi Tamada”,
“电子邮件”:ravi8x@gmail.com",
“电话”:{
“主页”:“08947 000000”,
“手机”:“9999999999”
}
},
{
“姓名”:“汤米”,
“电子邮件”:tommy@gmail.com",
“电话”:{
“主页”:“08946 000000”,
“移动”:“0000000000”
}
}
]
解析代码如下:
JsonArrayRequest req = new JsonArrayRequest(urlJsonArry,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
try {
// Parsing json array response
// loop through each json object
jsonResponse = "";
for (int i = 0; i < response.length(); i++) {
JSONObject person = (JSONObject) response
.get(i);
String name = person.getString("name");
String email = person.getString("email");
JSONObject phone = person
.getJSONObject("phone");
String home = phone.getString("home");
String mobile = phone.getString("mobile");
jsonResponse += "Name: " + name + "\n\n";
jsonResponse += "Email: " + email + "\n\n";
jsonResponse += "Home: " + home + "\n\n";
jsonResponse += "Mobile: " + mobile + "\n\n\n";
}
txtResponse.setText(jsonResponse);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
hidepDialog();
}
});
// Adding request to request queue, please substitute here with your own queue
VolleyQueue.add(req);
JsonArrayRequest req=新的JsonArrayRequest(urlJsonArry,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
试一试{
//解析json数组响应
//循环遍历每个json对象
jsonResponse=“”;
对于(int i=0;i
有关更多参考信息,请参见此。不,您将无法获得代码,您需要自己尝试。