android - 循环遍历没有子名称的json对象

标签 android json

我想检索这个 json 格式文档中所有元素的值。

[
            {
                "id": "c0001xgp",
                "title": 8.8,
                "content": 142.369,
                "vignette": "us",
                "image": "2011-03-11 04:46:23",
                "type": 24.4,
                "pubdate": 38.322
          },
            {
                "id": "c0001xgp",
                "title": 8.8,
                "content": 142.369,
                "vignette": "us",
                "image": "2011-03-11 04:46:23",
                "type": 24.4,
                "pubdate": 38.322
          },  {
                "id": "c0001xgp",
                "title": 8.8,
                "content": 142.369,
                "vignette": "us",
                "image": "2011-03-11 04:46:23",
                "type": 24.4,
                "pubdate": 38.322
          },  {
                "id": "c0001xgp",
                "title": 8.8,
                "content": 142.369,
                "vignette": "us",
                "image": "2011-03-11 04:46:23",
                "type": 24.4,
                "pubdate": 38.322
          }

]

我怎样才能做到这一点。我正在学习 json 和 android。当我可以处理的 json 对象中有父项时,但现在我很难解决这个问题。

主类

// JSON Node names
private static final String TAG_ARRAY= "";

private static final String TAG_ID = "id";

private static final String TAG_TITLE = "title";

private static final String TAG_CONTENT = "content";

private static final String TAG_VIGNETTE = "vignette";

private static final String TAG_IMAGE = "image";

private static final String TAG_TYPE = "type";

private static final String TAG_PUBDATE = "pubdate";


// contacts JSONArray

JSONArray myArray = null;

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.actus);

    // Hashmap for ListView
    ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

    // Creating JSON Parser instance

    JSONParser jParser = new JSONParser();

    // getting JSON string from URL
     JSONArray jArray = jParser.getJSONFromUrl(url);


        // looping through All element
        for(int i = 0; i < jArray.length(); i++){


            JSONObject oneObject = null;
            try{

            oneObject = jArray.getJSONObject(i);

            // Storing each json item in variable
            String id;

            String title;

                title = oneObject.getString(TAG_TITLE);


            String content = oneObject.getString(TAG_CONTENT);

            String vignette = oneObject.getString(TAG_VIGNETTE);

            String image = oneObject.getString(TAG_IMAGE);

            String type = oneObject.getString(TAG_TYPE);

            String pubdate = oneObject.getString(TAG_PUBDATE);


            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            // adding each child node to HashMap key => value

            map.put(TAG_TITLE, title);

            map.put(TAG_CONTENT, content);

            map.put(TAG_VIGNETTE, vignette);

            map.put(TAG_TYPE, type);

            map.put(TAG_PUBDATE, pubdate);



            // adding HashList to ArrayList

            contactList.add(map);


            }catch (JSONException e) {

                // TODO Auto-generated catch 

block e.printStackTrace();

        }



    /**
     * Updating parsed JSON data into ListView
     */
    ListAdapter adapter = new SimpleAdapter(this, contactList,
            R.layout.list_item,
            new String[] { TAG_TITLE, TAG_CONTENT, TAG_VIGNETTE }, new int[] {
                    R.id.name, R.id.email, R.id.mobile });

    setListAdapter(adapter);

    // selecting single ListView item
    ListView lv = getListView();

    // Launching new screen on Selecting Single ListItem

    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // getting values from selected ListItem
            String name = ((TextView) view.findViewById(R.id.name)).getText().toString();

            String cost = ((TextView) view.findViewById(R.id.email)).getText().toString();

            String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString();

            // Starting new intent
            Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
            in.putExtra(TAG_VIGNETTE, name);

            in.putExtra(TAG_CONTENT, cost);

            in.putExtra(TAG_VIGNETTE, description);

            startActivity(in);

        }
    });


}

最佳答案

“正如您所说,没有父级,因此您必须使用 JSONArray,您需要通过它循环并获取所有 JSON 对象。”

 try
  {  JSONArray mp3 = new JSONArray(jsonStr);
     JSONObject c = new JSONObject();                          

                    // looping through All 
                    for (int i = 0; i < mp3.length(); i++) 
                    {
                        try
                        {
                            c = mp3.getJSONObject(i);

                            String id = c.getString(TAG_mp3_id); 
                            String title = c.getString(TAG_title);


                            // tmp hashmap for single contact
                HashMap<String, String> contact = new HashMap<String,String>();

                            // adding each child node to HashMap key => value
                            contact.put(TAG_mp3_id, id);
                            contact.put(TAG_title, title);


                            // adding contact to contact list
                            mp3List.add(contact);


                        }    
                        catch (JSONException e) 
                        {
                               e.printStackTrace();
                        }
                    }

                }

“希望对你有所帮助。”

关于android - 循环遍历没有子名称的json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14477025/

相关文章:

android - 出现通知的 Espresso 测试

Android Viewpager 性能

javascript - JS数据操作

php - 如何将两个具有不同类型实体的数组组合成一个 json 对象?

java - 如何将 JsonIgnoreProperties 与父类(super class)合并?

android - 无法解析或不是 SUPPORTED_ABIS、FLAVOR & VERSION_CODES.LOLLIPOP 的字段

android - 如何使用 Intent.putExtra 和 Parcel 将对象从一个 Activity 发送到另一个?

android - 在启动时启动服务但不是整个 Android 应用程序

C# 操作 JSON 数据

json - 我在使用arm模板部署存储帐户时遇到问题