如何从此json对象中提取字符串名称数组?

时间:2014-05-17 08:17:25

标签: android

{ “类别”:[{ “ID”: “1”, “名称”: “ASDF”}]}

它是我的JSON字符串。 我想获得名称密钥的价值..我怎么能在android中做到这一点?请求帮助

  

块引用

6 个答案:

答案 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线程的