Как правильно отправить строку JSON из PHP и проанализировать ее в Java, чтобы получить POJO?

я использую 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\"}"

и это сработало. Не могли бы вы дать мне знать, что должно быть лучшим способом справиться с этим?

-1

Решение

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");
}

Это правильный путь.

2

Другие решения

Попробуй это —

json_encode($rows, JSON_FORCE_OBJECT);

Для более подробной информации, проверьте это ссылка на сайт

0

Попробуйте изменить свой код 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 на этот

0
По вопросам рекламы [email protected]