我正在尝试将字符串数组列表转换为JSONArray,然后将其发送到远程服务器
我希望它以JSONarray格式发送我的数组
这是错误"'java.lang.String org.json.JSONObject.getString(java.lang.String)' on a null object reference"
我的数组有2个元素, 当我尝试在log.d中获取它们时:list ja [null,null]
这是我正在使用的代码
public void sendCommande (){
bt_newCommande.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//----------------------------------
StringRequest stringRequest = new StringRequest(Request.Method.POST,url_ProdCommande, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG,"element envoie !");
//listProRest.clear();
//adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<String,String>();
JSONArray ja = new JSONArray(db.afficherTousProduit());
Log.d(TAG,"list ja "+ja.toString());
for(int i =0;i<ja.length();i++){
JSONObject j = ja.optJSONObject(i);
/*
try {
params.put("idProduit",j.getString(db.afficherTousProduit().get(i).getIdProduct()));
params.put("qte",j.getString(String.valueOf(db.afficherTousProduit().get(i).getQtePro())));
params.put("heure",j.getString(db.afficherTousProduit().get(i).gethCollete()));
params.put("date",j.getString(db.afficherTousProduit().get(i).getDateCollete()));
} catch (JSONException e) {
e.printStackTrace();
}
*/
}
//params.put("id",arrayList.get(position).getIdProduct());
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(stringRequest);
}
});
}
答案 0 :(得分:0)
看来
出了问题db.afficherTousProduit().get(i).getIdProduct()
我将设置一个断点并检查数据库是否正在返回您希望它返回的内容。
从查看您的代码来看,您似乎在做几次额外的工作,即往返于JSON。我可能是错的,但是我认为可以这样清除:
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<String,String>();
JSONArray ja = new JSONArray(db.afficherTousProduit());
Log.d(TAG,"list ja "+ja.toString());
// Begin iterating through the JSON Array
for (int i=0; i < arr.length(); i++) {
// Get current JSON Object at index i
JSONObject j = arr.getJSONObject(i)
try {
// Return the specified value associated with the String for the current object
params.put("key",j.getJsonString("key");
} catch (JSONException e) {
e.printStackTrace();
}
}
//params.put("id",arrayList.get(position).getIdProduct());
return params;
}
获取json数组的权限不应该超过一个数据库访问权限,然后只需遍历每个对象并从中获取所需的内容即可。查看Java docs了解更多信息。