я использую json_encode
создать строку JSON в PHP. $result
мой результат SQL.
$final_op="";
if(empty($result) == false){
$rows = array();
while($r = mysqli_fetch_assoc($result)) {
$rows[] = $r;
}
$final_op=json_encode($rows);
}
когда я получаю эту строку JSON на стороне клиента, я получаю это как
[{"username":"vikasdevde","user_fname":"Vikas Devde","user_work":"Programmer"}]
И я разбираю его на Java, как показано ниже
try{
JSONObject jObject = new JSONObject(response);
String aJsonUsername = jObject.getString("username");
String aJsonFname = jObject.getString("user_fname");
String aJsonUserWork = jObject.getString("user_work");
}catch(JSONException e){
e.printStackTrace();
System.out.println("JSON Exception");
}
Но я получаю JSONException, может быть, это из-за квадратных скобок, потому что после некоторого исследования я попытался использовать жестко закодированную строку
"{\"username\":\"vikasdevde\",\"user_fname\":\"Vikas Devde\",\"user_work\":\"Programmer\"}"
и это сработало. Не могли бы вы дать мне знать, что должно быть лучшим способом справиться с этим?
JSONArray jsonarray = new JSONArray(response);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String username= jsonobject.getString("username");
String user_fname= jsonobject.getString("user_fname");
String user_work= jsonobject.getString("user_work");
}
Это правильный путь.
Попробуй это —
json_encode($rows, JSON_FORCE_OBJECT);
Для более подробной информации, проверьте это ссылка на сайт
Попробуйте изменить свой код Java, как это
JSONArray jsonArray= new JSONArray(response);
JSONObject jObject=jsonArray.getJSONObject(0);
String aJsonUsername = jObject.getString("username");
String aJsonFname = jObject.getString("user_fname");
String aJsonUserWork = jObject.getString("user_work");
замените код в вашем блоке try на этот