Android解析对Java ArrayList的Json响应
我试图通过截击向我的WCF服务发出GET请求,我想解析它对JavaAndroid解析对Java ArrayList的Json响应,java,android,json,android-volley,Java,Android,Json,Android Volley,我试图通过截击向我的WCF服务发出GET请求,我想解析它对JavaArrayList的响应。这是我的方法 public ArrayList<Company> getCompanies(){ String url = AUDITTRACKINGAPP_SERVICE_URI + "GetCompanies"; String tagJsonReq = "companiesRequest"; final ProgressDialo
ArrayList
的响应。这是我的方法
public ArrayList<Company> getCompanies(){
String url = AUDITTRACKINGAPP_SERVICE_URI + "GetCompanies";
String tagJsonReq = "companiesRequest";
final ProgressDialog pDialog = new ProgressDialog(context);
pDialog.setMessage("Please Wait...");
pDialog.show();
final ArrayList<Company> companies = new ArrayList<Company>();
JsonObjectRequest companiesRequest = new JsonObjectRequest( Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v(TAG, "COMPANIES RESPONSE:" + response.toString());
try {
JSONArray companiesJson = response.getJSONArray("GetCompaniesResult");
for (int i = 0; i < companiesJson.length(); i++) {
JSONObject jObject = (JSONObject)companiesJson.get(i);
Company company = new Company();
company.setCompanyId(Integer.parseInt(jObject.getString("CompanyId")));
Log.v(TAG, "COMPANIES setCompanyId:" + jObject.getString("CompanyId"));
company.setCompanyName(jObject.getString("CompanyName"));
Log.v(TAG, "COMPANIES setCompanyName:" + jObject.getString("CompanyName"));
companies.add(company);
}
} catch (JSONException e) {
Log.v(TAG, "COMPANIES RESPONSE ERROR ON PARSING JSON:" + e.getMessage());
}
pDialog.hide();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v(TAG, "COMPANIES onErrorResponse:" + error.getMessage());
pDialog.hide();
}
});
AppController.getInstance().addToRequestQueue(companiesRequest, tagJsonReq);
return companies;
}
我能够得到JSON响应,但
ArrayList
返回空值。我认为,onResponse
是一个calback方法,在另一个线程中运行,因此我无法填充列表,但由于我是Android新手,我不知道如何处理这个问题。任何帮助都将不胜感激。JsonObjectRequest
工作异步,因为主线程将继续运行,并创建一个新线程来运行JsonObjectRequest,结果是返回值为空。在类中调用一个方法以发回数据,并在完成json数据管理后调用它,例如:
public void manageCompaniesData(ArrayList<Company>){
//YOUR CODE HERE.
}
public void管理公司数据(ArrayList){
//你的代码在这里。
}
您的代码已修改:
public ArrayList<Company> getCompanies(){
String url = AUDITTRACKINGAPP_SERVICE_URI + "GetCompanies";
String tagJsonReq = "companiesRequest";
final ProgressDialog pDialog = new ProgressDialog(context);
pDialog.setMessage("Please Wait...");
pDialog.show();
final ArrayList<Company> companies = new ArrayList<Company>();
JsonObjectRequest companiesRequest = new JsonObjectRequest( Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v(TAG, "COMPANIES RESPONSE:" + response.toString());
try {
JSONArray companiesJson = response.getJSONArray("GetCompaniesResult");
for (int i = 0; i < companiesJson.length(); i++) {
JSONObject jObject = (JSONObject)companiesJson.get(i);
Company company = new Company();
company.setCompanyId(Integer.parseInt(jObject.getString("CompanyId")));
Log.v(TAG, "COMPANIES setCompanyId:" + jObject.getString("CompanyId"));
company.setCompanyName(jObject.getString("CompanyName"));
Log.v(TAG, "COMPANIES setCompanyName:" + jObject.getString("CompanyName"));
companies.add(company);
}
} catch (JSONException e) {
Log.v(TAG, "COMPANIES RESPONSE ERROR ON PARSING JSON:" + e.getMessage());
}
manageCompaniesData(companies);
pDialog.hide();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v(TAG, "COMPANIES onErrorResponse:" + error.getMessage());
pDialog.hide();
}
});
AppController.getInstance().addToRequestQueue(companiesRequest, tagJsonReq);
}
public ArrayList getcompanys(){
字符串url=AUDITTRACKINGAPP\u服务\u URI+“GetCompanys”;
字符串tagJsonReq=“companiesRequest”;
final ProgressDialog pDialog=新建ProgressDialog(上下文);
setMessage(“请稍候…”);
pDialog.show();
最终ArrayList公司=新ArrayList();
JsonObjectRequest CompanyRequest=新的JsonObjectRequest(Request.Method.GET,url,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
Log.v(标记“companys RESPONSE:+RESPONSE.toString());
试一试{
JSONArray companiesJson=response.getJSONArray(“GetCompaniesResult”);
for(int i=0;i
JsonObjectRequest
工作异步,因为主线程继续运行,并且创建了一个新线程来运行JsonObjectRequest,结果是返回值为空。在类中调用一个方法以发回数据,并在完成json数据管理后调用它,例如:
public void manageCompaniesData(ArrayList<Company>){
//YOUR CODE HERE.
}
public void管理公司数据(ArrayList){
//你的代码在这里。
}
您的代码已修改:
public ArrayList<Company> getCompanies(){
String url = AUDITTRACKINGAPP_SERVICE_URI + "GetCompanies";
String tagJsonReq = "companiesRequest";
final ProgressDialog pDialog = new ProgressDialog(context);
pDialog.setMessage("Please Wait...");
pDialog.show();
final ArrayList<Company> companies = new ArrayList<Company>();
JsonObjectRequest companiesRequest = new JsonObjectRequest( Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.v(TAG, "COMPANIES RESPONSE:" + response.toString());
try {
JSONArray companiesJson = response.getJSONArray("GetCompaniesResult");
for (int i = 0; i < companiesJson.length(); i++) {
JSONObject jObject = (JSONObject)companiesJson.get(i);
Company company = new Company();
company.setCompanyId(Integer.parseInt(jObject.getString("CompanyId")));
Log.v(TAG, "COMPANIES setCompanyId:" + jObject.getString("CompanyId"));
company.setCompanyName(jObject.getString("CompanyName"));
Log.v(TAG, "COMPANIES setCompanyName:" + jObject.getString("CompanyName"));
companies.add(company);
}
} catch (JSONException e) {
Log.v(TAG, "COMPANIES RESPONSE ERROR ON PARSING JSON:" + e.getMessage());
}
manageCompaniesData(companies);
pDialog.hide();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v(TAG, "COMPANIES onErrorResponse:" + error.getMessage());
pDialog.hide();
}
});
AppController.getInstance().addToRequestQueue(companiesRequest, tagJsonReq);
}
public ArrayList getcompanys(){
字符串url=AUDITTRACKINGAPP\u服务\u URI+“GetCompanys”;
字符串tagJsonReq=“companiesRequest”;
final ProgressDialog pDialog=新建ProgressDialog(上下文);
setMessage(“请稍候…”);
pDialog.show();
最终ArrayList公司=新ArrayList();
JsonObjectRequest CompanyRequest=新的JsonObjectRequest(Request.Method.GET,url,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
Log.v(标记“companys RESPONSE:+RESPONSE.toString());
试一试{
JSONArray companiesJson=response.getJSONArray(“GetCompaniesResult”);
for(int i=0;i
如果在logcat中出现任何JSON异常,请尝试一次
for (int i = 0; i < companiesJson.length(); i++) {
JSONObject jObject = companiesJson.getJSONObject(i);
Company company = new Company();
company.setCompanyId(Integer.parseInt(jObject.getString("CompanyId")));
Log.v(TAG, "COMPANIES setCompanyId:" + jObject.getString("CompanyId"));
company.setCompanyName(jObject.getString("CompanyName"));
Log.v(TAG, "COMPANIES setCompanyName:" + jObject.getString("CompanyName"));
companies.add(company);
}
for(int i=0;iJSONObject jObject = (JSONObject)companiesJson.get(i);
for (int i = 0; i < companiesJson.length(); i++) {
JSONObject jObject = companiesJson.getJSONObject(i);
Company company = new Company();
company.setCompanyId(jObject.getInt("CompanyId")));
company.setCompanyName(jObject.getString("CompanyName"));
companies.add(company);
}
for (int i = 0; i < companiesJson.length(); i++) {
JSONObject jObject = (JSONObject)companiesJson.get(i);
Company company = new Company();
company.setCompanyId(Integer.parseInt(jObject.getString("CompanyId")));
Log.v(TAG, "COMPANIES setCompanyId:" + jObject.getString("CompanyId"));
company.setCompanyName(jObject.getString("CompanyName"));
Log.v(TAG, "COMPANIES setCompanyName:" + jObject.getString("CompanyName"));
companies.add(company);
}
try {
JSONArray companiesJson = response.getJSONArray("GetCompaniesResult");
for (int i = 0; i < companiesJson.length(); i++) {
JSONObject obj = Website.getJSONObject(i);
Company company = new Company();
company.setCompanyId(Integer.parseInt(obj.getString("CompanyId")));
Log.v(TAG, "COMPANIES setCompanyId:" + obj.getString("CompanyId"));
company.setCompanyName(obj.getString("CompanyName"));
Log.v(TAG, "COMPANIES setCompanyName:" + obj.getString("CompanyName"));
companies.add(company);
}
} catch (JSONException e) {
Log.v(TAG, "COMPANIES RESPONSE ERROR ON PARSING JSON:" + e.getMessage());
}
Company company = new Company();
JSONObject jObject = (JSONObject)companiesJson.optJSONObject(i);
if(jObject != null){
company.setCompanyId(jObject.optInt("CompanyId")));
company.setCompanyName(jObject.optString("CompanyName"));
}
JSONObject jObject = companiesJson.getJSONObject(i);
Company company = new Company();
company.setCompanyId(Integer.parseInt(jObject.getString("CompanyId")));
Log.v(TAG, "COMPANIES setCompanyId:" + jObject.getString("CompanyId"));
company.setCompanyName(jObject.getString("CompanyName"));
Log.v(TAG, "COMPANIES setCompanyName:" + jObject.getString("CompanyName"));
companies.add(company);