如何从 PHP 正确发送 JSON 字符串并在 Java 中解析它以获得 POJO?

How to correctly send JSON string from PHP and parse it in Java to get POJO?

我正在使用 json_encode 在 PHP 中创建 JSON 字符串。 $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");
                    }

但是我得到了一个 JSON 异常,可能是因为周围有方括号,因为经过一些研究我尝试使用硬编码字符串

  "{\"username\":\"vikasdevde\",\"user_fname\":\"Vikas Devde\",\"user_work\":\"Programmer\"}"

它奏效了。你能告诉我处理这个问题的最佳方法是什么吗?

试试这个 -

json_encode($rows, JSON_FORCE_OBJECT);

如需更多参考,请查看此 link

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

这是正确的方法。

尝试像这样更改您的 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 块中的代码