20

我有一堂课叫

class Student {
   String name;
   String age;
}

我有一个返回 List 对象的方法,例如

public List<Student> getList(){

 List<Student> li =new ArrayList();
 ....

 li.add(new Student('aaa','12'));
 ... 

 return li;    
}

我需要像这样将该列表转换为 JSONArray

[{"name":"sam","age":"12"},{"name":"sri","age":"5"}]

谁能帮我得到这个?

4

7 回答 7

23

使用Gson库将非常简单。

从 JSON 字符串到对象的 ArrayList 为:

Type listType = 
     new TypeToken<ArrayList<Student>>(){}.getType();
ArrayList<Student> yourClassList = new Gson().fromJson(jsonArray, listType);

并将对象数组列表中的 Json 作为:

ArrayList<Student> sampleList = new ArrayList<Student>();
String json = new Gson().toJson(sampleList);

Gson 库比使用JSONObjectJSONArray实现更简单。

于 2015-11-23T18:35:16.217 回答
21

您必须jettison在项目中包含 jar 并导入所需的类。

JSONObject jObject = new JSONObject();
try
{
    JSONArray jArray = new JSONArray();
    for (Student student : sudentList)
    {
         JSONObject studentJSON = new JSONObject();
         studentJSON.put("name", student.getName());
         studentJSON.put("age", student.getAge());
         jArray.put(studentJSON);
    }
    jObject.put("StudentList", jArray);
} catch (JSONException jse) {
    jse.printStacktrace();
}
于 2012-05-29T10:09:15.167 回答
5

像下面这样创建 JSONArray。

JSONArray jsArray = new JSONArray(arrayList);

于 2019-03-18T08:30:11.980 回答
4

我认为您不需要下载 jettison jar 文件。

使用JSONArray并且JSONObject您可以轻松地将该列表转换为 JSON 对象,例如 @Juniad 答案

于 2012-05-29T11:16:27.483 回答
1

尝试 gson:序列化和反序列化通用类型

于 2012-05-29T10:03:50.410 回答
1

json-lib 可能是您正在寻找的库。您可以在此处找到一些使用示例。

于 2012-05-29T10:03:55.190 回答
1

当您想直接将 Object 映射到 json 或想将 json 转换为 object 时,可以使用 GSON 库。这将为您提供更大的灵活性和控制力。

下载链接 - http://code.google.com/p/google-gson/

教程链接 - http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/

于 2012-05-29T11:44:55.060 回答