解析简单的json并加载简单的java对象

时间:2011-07-25 10:32:29

标签: java android json

我有这个简单的课程:

class element{
   public int id;
   public String name;
}

和这个JSON文件:

    [
        {
            "id": 1,
            "name": "water"
        },
        {
            "id": 2,
            "name": "fire"
        }
...
    ]

如何在List中加载此JSON?有人可以向我建议一个好的JSON库吗?我可以在android中使用Jar吗?

3 个答案:

答案 0 :(得分:3)

你也可以在android中使用内置的org.json库,你可以使用:

List<Element> elements = new LinkedList<Element>();
JSONArray arr = new JSONArray(jsonString);
JSONObject tempObj;
Element tempEl;
for(int i = 0; i < arr.length(); i++){
    tempObj = arr.getJSONObject(i);
    tempEl = new Element();
    tempEl.id = tempObj.getInt("id");
    tempEl.name = tempObj.getString("name");
    elements.add(tempEl);
}

您将获得一系列元素。

答案 1 :(得分:2)

试试Jackson;它可以处理这个以及更多。

答案 2 :(得分:1)

这很容易。这是完整的代码

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

 public List<element> generateList()
 { 
  String jsonString = "[{\"id\": 1,\"name\": \"water\"},{\"id\": 2,\"name\": \"fire\"}]"; 
  JSONArray json = null;
  List<element> mElementList = new ArrayList<element>();
    try {
        json = new JSONArray(jsonString);
    } catch (JSONException je) {
        Log.e("TAG", "Json Exception" + je.getMessage() );
        return;
    }
 JSONObject jsonObject = null;
    element ele = null;
    for (int i = 0; i < json.length(); i++) {
        try {
            jsonObject = json.getJSONObject(i);
                            ele = new element();

                            if(jsonObject.has("id"))
                             {
                               ele.id = jsonObject.getString("id")
                             }     

                            if(jsonObject.has("name"))
                             {
                               ele.name = jsonObject.getString("name")
                             }     

            mElementList.add(ele);
        } catch (JSONException jee) {
            Log.e("TAG", "" + jee.getMessage());
        }

    }
           return mElementList;
   }