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

时间:2017-09-09 14:07:42

标签: java php android json jsonexception

我正在使用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");
                    }

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

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

它有效。能不能让我知道最好的办法是什么?

3 个答案:

答案 0 :(得分:2)

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

这是正确的方法。

答案 1 :(得分:0)

试试这个 -

json_encode($rows, JSON_FORCE_OBJECT);

有关详情,请查看此link

答案 2 :(得分: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块中的代码