{ “类别”:[{ “ID”: “1”, “名称”: “ASDF”}]}
它是我的JSON字符串。 我想获得名称密钥的价值..我怎么能在android中做到这一点?请求帮助
块引用
答案 0 :(得分:2)
这是你的json解析,带有异常处理和空检查:
//get json string first from the response and convert it into json object
JSONObject object;
try {
object = new JSONObject("yourjsonstring");
} catch (JSONException e) {
e.printStackTrace();
object = null;
}
JSONArray jsonArray;
if (object != null) {
Object categoryObject = null;
try {
categoryObject = object.get("categories");
} catch (JSONException e) {
e.printStackTrace();
categoryObject = null;
}
if (categoryObject != null) {
if (categoryObject instanceof JSONArray) {
//if categoriew array having more than 1 items
jsonArray = (JSONArray) categoryObject;
} else {
//if categories array having single item
jsonArray = new JSONArray();
jsonArray.put((JSONObject) categoryObject);
}
JSONObject categoryItemObj = null;
for (int i = 0; i < jsonArray.length(); i++) {
try {
categoryObject = jsonArray.getJSONObject(i);
} catch (JSONException e) {
e.printStackTrace();
categoryItemObj = null;
}
if (categoryItemObj != null) {
String id = "";
try {
id = categoryItemObj.getString("id");
} catch (JSONException e) {
e.printStackTrace();
id = "";
}
String name;
try {
name = categoryItemObj.getString("name");
} catch (JSONException e) {
e.printStackTrace();
name = "";
}
}
}
}
}
答案 1 :(得分:1)
您可以使用Gson的fromJson()方法将其映射到POJO,然后从中提取名称。
输入listType = new TypeToken&gt;(){}。getType(); new Gson()。fromJson(“[{”id“:”1“,”name“:”asdf“}]”,listType);
您将获得List<Category>
,然后从列表中提取名称。
答案 2 :(得分:1)
之后你必须从JSONObject获取数组。 在这里,您可以从上面的数组中获取所有值。
JSONObject object = new JSONObject(yourjsonstring);
JSONArray id = object.getJSONArray("id");
JSONArray name = object.getJSONArray("name");
for(int i=0;i<id.length; i++){
String strid=id.getString(i);
String strname=name.getString(i);
}
答案 3 :(得分:0)
解析这个json字符串。
使用Gson解析器,例如:https://code.google.com/p/google-gson/
答案 4 :(得分:0)
或者您可以使用Android的JSONObject。这是一个教程 - http://www.javacodegeeks.com/2013/10/android-json-tutorial-create-and-parse-json-data.html
答案 5 :(得分:0)
public class HttpAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
return GET(urls[0]);
}
// onPostExecute displays the results of the AsyncTask.
@Override
protected void onPostExecute(String result) {
Toast.makeText(getBaseContext(), "Received!", Toast.LENGTH_LONG).show();
try {
JSONObject json = new JSONObject(result);
JSONArray articles = json.getJSONArray("categories");
String name=new String[json.getJSONArray("images").length()]; //initializtion
for(int i=0;i<json.getJSONArray("categories").length();i++){
name[i] = (articles.getJSONObject(i).optString("name"));//here u got your value all name
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
使用execute调用asynctask并像这样传递url
new HttpAsyncTask().execute(url);
来自UI线程的