Android JSON 数组解析
Android JSON Array Parsing
我如何用网络请求解析这个 Json API,正是元素 "Players":
{
"data": [
{
"Id": *,
"ModId": *,
"appId": ***********,
"online": *,
"Servername": "**** **** *****",
"IpAddress": "**.**.**.**",
"Port": ****,
"ServerPassword": ********,
"StartParameters": "*******",
"Slots": **,
"Playercount": **,
"Civilians": **,
"Medics": *,
"Cops": *,
"Adac": *,
"Players": [
"***********",
"***********",
"******",
"******"
]
}
]
}
我希望它能够解析我每次循环 运行 一个玩家名时的状态,以将其添加到列表视图中。
但是我不知道如何像这样解析 "Players" 元素。
感谢您的帮助!
在这里使用新概念 Retofit 你不需要解析只是创建 pojo class,参考下面 link
您可以保存从 JSON
中删除了多少元素的索引。喜欢
int index = 0;
并创建一个可以访问 JSON
的方法并将索引传递给它,例如
public String getPlayerFromJsonAtIndex(int i) {...}
.
现在访问 JSON
字符串并使用 JSONObject
解析它(提示在开始时立即存储解析的玩家数组)。让你像
一样解析 Players 数组
JSONArray players = (new JSONObject(jsonString))
.getJSONArray("data")
.get(0)
.getJSONArray("Players");
现在玩家 JSONArray
从提供的索引处获取字符串。喜欢
{
return (String)players.get(i);
}
希望对您有所帮助谢谢。
使用下面的代码来解析响应。
JSONObject objMain = new JSONObject(yourData);
try {
JSONArray respArray = objMain.getJSONArray("data");
for(int i=0;i<respArray.length();i++)
{
JSONObject dataObj = respArray.getJSONObject(i);
String id = dataObj.getString("id");
-
-
JSONArray arrayPlayer = dataObj.getJSONArray("players");
for(int j=0;j<arrayPlayer.length();j++){
JSONObject playerObj = arrayPlayer.getJSONObject(j);
---
}
}
}catch (Exception e){
e.printStackTrace();
}
并使用适当的参数获取剩余数据。:)
以下代码使用 JSON 字符串中的球员填充列表。
List<String> players = new ArrayList<>();
try {
JSONObject jsonObj = new JSONObject(jsonString);
JSONArray data = jsonObj.getJSONArray("data");
JSONObject dataObj = data.getJSONObject(0);
JSONArray playersJson = dataObj.getJSONArray("Players");
for (int i = 0; i < playersJson.length(); i++) {
players.add(playersJson.get(i).toString());
}
} catch (JSONException e) {
Log.e(TAG, e.getMessage());
}
然后您可以使用此列表和 ArrayAdapter
来填充您的 ListView
。
ArrayAdapter<String> adapter;
ListView listView = (ListView) findViewById(R.id.listView);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, players);
listView.setAdapter(adapter);
我如何用网络请求解析这个 Json API,正是元素 "Players":
{
"data": [
{
"Id": *,
"ModId": *,
"appId": ***********,
"online": *,
"Servername": "**** **** *****",
"IpAddress": "**.**.**.**",
"Port": ****,
"ServerPassword": ********,
"StartParameters": "*******",
"Slots": **,
"Playercount": **,
"Civilians": **,
"Medics": *,
"Cops": *,
"Adac": *,
"Players": [
"***********",
"***********",
"******",
"******"
]
}
]
}
我希望它能够解析我每次循环 运行 一个玩家名时的状态,以将其添加到列表视图中。 但是我不知道如何像这样解析 "Players" 元素。
感谢您的帮助!
在这里使用新概念 Retofit 你不需要解析只是创建 pojo class,参考下面 link
您可以保存从 JSON
中删除了多少元素的索引。喜欢
int index = 0;
并创建一个可以访问 JSON
的方法并将索引传递给它,例如
public String getPlayerFromJsonAtIndex(int i) {...}
.
现在访问 JSON
字符串并使用 JSONObject
解析它(提示在开始时立即存储解析的玩家数组)。让你像
JSONArray players = (new JSONObject(jsonString))
.getJSONArray("data")
.get(0)
.getJSONArray("Players");
现在玩家 JSONArray
从提供的索引处获取字符串。喜欢
{
return (String)players.get(i);
}
希望对您有所帮助谢谢。
使用下面的代码来解析响应。
JSONObject objMain = new JSONObject(yourData);
try {
JSONArray respArray = objMain.getJSONArray("data");
for(int i=0;i<respArray.length();i++)
{
JSONObject dataObj = respArray.getJSONObject(i);
String id = dataObj.getString("id");
-
-
JSONArray arrayPlayer = dataObj.getJSONArray("players");
for(int j=0;j<arrayPlayer.length();j++){
JSONObject playerObj = arrayPlayer.getJSONObject(j);
---
}
}
}catch (Exception e){
e.printStackTrace();
}
并使用适当的参数获取剩余数据。:)
以下代码使用 JSON 字符串中的球员填充列表。
List<String> players = new ArrayList<>();
try {
JSONObject jsonObj = new JSONObject(jsonString);
JSONArray data = jsonObj.getJSONArray("data");
JSONObject dataObj = data.getJSONObject(0);
JSONArray playersJson = dataObj.getJSONArray("Players");
for (int i = 0; i < playersJson.length(); i++) {
players.add(playersJson.get(i).toString());
}
} catch (JSONException e) {
Log.e(TAG, e.getMessage());
}
然后您可以使用此列表和 ArrayAdapter
来填充您的 ListView
。
ArrayAdapter<String> adapter;
ListView listView = (ListView) findViewById(R.id.listView);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, players);
listView.setAdapter(adapter);