我对此非常陌生,所以我不知道该怎么做,我还在学习如何解析JSON文件。我试图使用Volley解析this JSON对象,但我错过了接下来该做什么的逻辑。谢谢! 这是我的代码:
public class MainActivity extends AppCompatActivity {
private TextView results;
String JsonUrl = "http://api.androidhive.info/contacts/";
String data = "";
RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestQueue = Volley.newRequestQueue(this);
results = (TextView) findViewById(R.id.jsonData);
JsonObjectRequest objRequest = new JsonObjectRequest(Request.Method.GET,
JsonUrl, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject contactObj = response.getJSONObject("contacts");
for (int i = 0; i < contactObj.length(); i++) {
String id = contactObj.getString("id");
String name = contactObj.getString("name");
data += "";
data += "Id " + id + "\n\n";
data += "Name " + name + "\n\n";
}
results.setText(data);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Volley", "Error");
}
});
requestQueue.add(objRequest);
}
}
答案 0 :(得分:0)
如果解析JSON在这一点上正确获取了id和name,那么唯一要做的就是使用该数据。你知道它是否抓住了这些信息吗?如果它正在抓取数据,那么接下来要做的就是在Activity中创建一个函数并调用它,例如
public void processJSONResults(String id, String name) {
...Handle processing of data, update GUI etc...
}
然后从您的onResponse中,您只需使用您的数据调用processJSONResults即可。如果JSON处理没有工作让我知道,并给我错误/结果。
答案 1 :(得分:0)
试试这个..
JSONObject contactObj = new JSONObject(response);
JSONArray contactArray = contactObjj.getJSONArray("contacts")
for (int i = 0; i < contactArray.length(); i++) {
JSONObject jsonObj = contactArray.getJSONObject(i);
String id = jsonObj.getString("id");
String name = jsonObj.getString("name");
//Define your logic here to pass the data on results
results.setText(data);
一定会帮到你!
答案 2 :(得分:0)
这是JSON对象:
{“number1”:“value1”,“number2”:“value2”,“number3”:“value3”}
使用键()迭代器迭代所有属性,并为每个属性调用 get()。
示例代码:
Iterator<String> iter = json.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = json.get(key);
} catch (JSONException e) {
// Something went wrong!
}
}
希望这会对你有所帮助.. 感谢
答案 3 :(得分:0)
Contacts是一个数组。使用以下内容。
JSONArray contactObjArray = response.getJSONArray("contacts");
现在你可以迭代数组了。