如何从 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 块中的代码
我正在使用 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 块中的代码