我已经观看了超过5个小时的YouTube教程,但我根本就没有得到如何使这项工作。总有一些我不理解或与我不相干的东西。
我想从数据库获取数据并将其带到我的Android。我已经读过这可能适用于JSON。
以下是我的JSON数据库导出的链接。这是对的吗?
http://web2page.ch/apps/FruityNumber/recordShow2.php
我使用的API:
compileSdkVersion 23
我希望你能一步一步地帮助我。我正在寻找最简单的方法。
答案 0 :(得分:1)
有几种方法可以执行此操作。您可以对服务器执行Http请求并获取结果,将它们手动解析为java对象。或者使用像Gson这样的库,它可以节省您手动解析的工作并将JSON字符串序列化为java对象。
但我建议使用Retrofit一个Http客户端,它可以让你轻松下载JSON数据并将其解析为POJO(Plain Old Java Object)。 Retrofit为此目的使用了转换器,如Gson,Jackson,Moshi等。
使用Retrofit非常简单,
最后是您的回复的POJO课程,
public class Item {
public String id;
public String user;
public String highscore;
}
Here是有关如何使用Retrofit的完整指南。
答案 1 :(得分:1)
使用像GSON这样的库将JSON转换为Java对象会更容易。
它的工作方式是创建一个模型类,例如:
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
@Generated("org.jsonschema2pojo")
public class Result{
@SerializedName("id")
@Expose
private String id;
@SerializedName("user")
@Expose
private String user;
@SerializedName("highscore")
@Expose
private String highscore;
/**
*
* @return
* The id
*/
public String getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
* The user
*/
public String getUser() {
return user;
}
/**
*
* @param user
* The user
*/
public void setUser(String user) {
this.user = user;
}
/**
*
* @return
* The highscore
*/
public String getHighscore() {
return highscore;
}
/**
*
* @param highscore
* The highscore
*/
public void setHighscore(String highscore) {
this.highscore = highscore;
}
}
这很容易:
Gson gson = new Gson();
List<Result> results = gson.fromJson(json, new TypeToken<List<Result>>(){}.getType());
示例:
for(Result res : results){
Log.d(LOG_TAG, "id = " + res.getId());
}
答案 2 :(得分:0)
有很多方法可以完成工作。但是我的工作很简单。
http://syntx.io/how-to-send-an-http-request-from-android-using-httpurlconnection/
我认为你应该改变你的json格式:
{
"Results": [
{
"id": "1",
"user": "ero",
"highscore": "13 Sek"
},
{
"id": "2",
"user": "rick",
"highscore": "21 Sek"
},
{
"id": "3",
"user": "rick",
"highscore": "21 Sek"
},
{
"id": "4",
"user": "rick",
"highscore": "21 Sek"
},
{
"id": "5",
"user": "rick",
"highscore": "21 Sek"
},
{
"id": "6",
"user": "rick",
"highscore": "21 Sek"
},
{
"id": "7",
"user": "rick",
"highscore": "21 Sek"
},
{
"id": "8",
"user": "rick",
"highscore": "21 Sek"
},
{
"id": "9",
"user": "",
"highscore": ""
},
{
"id": "10",
"user": "Stefano",
"highscore": "alle"
},
{
"id": "11",
"user": "Test001",
"highscore": "Test001"
},
{
"id": "12",
"user": "",
"highscore": ""
},
{
"id": "13",
"user": "Stefano",
"highscore": "5sek"
},
{
"id": "14",
"user": "sven",
"highscore": "1"
},
{
"id": "15",
"user": "sven",
"highscore": "1"
},
{
"id": "16",
"user": "sven",
"highscore": "1"
},
{
"id": "17",
"user": "",
"highscore": ""
},
{
"id": "18",
"user": "kiala",
"highscore": ""
},
{
"id": "19",
"user": "kiala",
"highscore": "angola"
},
{
"id": "20",
"user": "kiala",
"highscore": ""
}
]
}
它看起来非常相关且易于解析。要更改json格式,可以在php文件中编码。
$sql = mysqli_query("SELECT ...");
$resluts = array();
while($row = mysqli_fetch_assoc($sql)) {
$tmp = array();
$tmp["id"] = $row["id"];
$tmp["user"] = $row["user"];
$tmp["highscore"] = $row["highscore"];
array_push($results["Results"], $tmp);
}
echo json_encode($results);