java - 改造如何使用改造将 Json 中的 Json 转换为字符串
问题描述
如何从 json 中的 json 返回字符串数据。一是检查是否有数据。然后 201 响应应该导致数据被转换为字符串。
我尝试了以下方法,但它不起作用。我有什么问题。任何人都可以向我解释,以便我可以学习这个吗?
//我在按钮按下时调用的方法。
PhpResponse 和 getCervicalROM 是下面列出的模型类。我尝试 Toast 以确保我获得了 String 变量数据。但是什么也没有出现。
public void downloadromdata() {
Call <PhpResponse> call = RetrofitClient.getInstance().getAPIService().getCervicalROM(ID);
call.enqueue(new Callback<PhpResponse>() {
@Override
public void onResponse(Call<PhpResponse> call, Response<PhpResponse> response) {
if(response.code() == 201)
{
PhpResponse phpResponse = response.body();
RACERVICALROT = phpResponse.getUser().getRACERVICALROT();
LACERVICALROT = phpResponse.getUser().getLACERVICALROT();
Toast.makeText(cervicaltest.this, RACERVICALROT + "&" + LACERVICALROT, Toast.LENGTH_LONG).show();
}else if(response.code() == 422){
Toast.makeText(cervicaltest.this, "No data found", Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<PhpResponse> call, Throwable t) {
}
});
}
getCervicalROM 模型
public class getCervicalROM {
private String RACERVICALROT, LACERVICALROT;
public getCervicalROM(String RACERVICALROT, String LACERVICALROT) {
this.RACERVICALROT = RACERVICALROT;
this.LACERVICALROT = LACERVICALROT;
}
public String getRACERVICALROT() {
return RACERVICALROT;
}
public String getLACERVICALROT() {
return LACERVICALROT;
}
}
响应模型
public class PhpResponse {
private boolean error;
private String message;
private getCervicalROM user;
public PhpResponse(boolean error, String message, getCervicalROM user) {
this.error = error;
this.message = message;
this.user = user;
}
public boolean isError() {
return error;
}
public String getMessage() {
return message;
}
public getCervicalROM getUser() {
return user;
}
}
API服务
@FormUrlEncoded
@POST("getCervicalROM")
Call<PhpResponse> getCervicalROM (@Field("ID") String ID);
getCervicalROM 也是索引调用的名称。PHP Slim 在邮递员中返回数据,所以这最后的东西很可能没问题。
$app->post('/getCervicalROM', function(Request $request, Response $response)
{
if(!haveEmptyParameters(array('ID'), $response)){
$request_data = $request->getParsedBody();
$ID = $request_data['ID'];
$db = new spinalromdbupload;
$result = $db->ptexists($ID);
if($result == DATA_FOUND){
$user = $db->getCervicalROM($ID);
$response_data = array();
$response_data['error'] = false;
$response_data['message'] = 'Data Aquired';
$response_data['user'] = $user;
$response->write(json_encode($response_data));
return $response
->withHeader('Content-type', 'application/json')
->withStatus(200);
} else if ($result == DATA_NOT_FOUND){
$response_data = array();
$response_data['error']=true;
$response_data['message'] = 'No ROM data entered for this pt';
$response->write(json_encode($response_data));
return $response
->withHeader('Content-type', 'application/json')
->withStatus(422);
}}
return $response
->withHeader('Content-type', 'application/json')
->withStatus(422);
});
php文件
public function getCervicalROM($ID){
$stmt = $this->con->prepare("SELECT RACERVICALROT, LACERVICALROT FROM
spinalromdb WHERE ID = ?");
$stmt->bind_param("s", $ID);
$stmt->execute();
$stmt->bind_result($RACERVICALROT, $LACERVICALROT);
$stmt->fetch();
$user = array();
$user['RACERVICALROT'] = $RACERVICALROT;
$user['LACERVICALROT'] = $LACERVICALROT;
return $user;
}
private function isIDExist($ID){
$stmt = $this->con->prepare("SELECT ID FROM spinalromdb WHERE ID =
?");
$stmt->bind_param("s", $ID);
$stmt->execute();
$stmt->store_result();
return $stmt->num_rows > 0;
}
解决方案
更改代码状态和上面的代码工作正常。在 PHP 索引文件中,它应该是 201 而不是 200。
推荐阅读
- java - 枚举可以是两个阶段的一部分吗?
- markdown - 有没有办法在 Markdown 中格式化对话?
- python - 用于提取数字的 Python3 正则表达式
- flutter - 如何重用 Stateful Widget?
- javascript - 未检测到 echarts 4.3.0 数据缩放事件
- c# - 是否可以在内存中创建电子表格并将其提供给链接而不将其保存在服务器端?
- xamarin.ios - Xamarin iOS 绑定 - 协议 - 无法创建抽象类的实例
- java - 单例设计模式双重检查锁定
- php - 如何将命名方法传递给 Laravel 中的后备路由?
- python - Kivy - 使用按钮开始视频