如何为 List<Class name> 创建 JSONArray

Posted

技术标签:

【中文标题】如何为 List<Class name> 创建 JSONArray【英文标题】:How to Create JSONArray for a List<Class name> 【发布时间】:2012-06-03 13:01:41 【问题描述】:

我有一门课叫

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"]

谁能帮我搞定这个?

【问题讨论】:

【参考方案1】:

如下创建 JSONArray。

JSONArray jsArray = new JSONArray(arrayList);

【讨论】:

如果那样的话。我得到了一个充满空值的 JSONArray。【参考方案2】:

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

使用JSONArrayJSONObject,您可以轻松将该列表转换为JSON 对象,如@Juniad answer

【讨论】:

您愿意详细说明@Juniad 的答案是什么吗?它目前不存在。【参考方案3】:

您必须在项目中包含 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();

【讨论】:

【参考方案4】:

使用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 实现更易于使用。

【讨论】:

【参考方案5】:

当你想直接将 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/

【讨论】:

【参考方案6】:

json-lib 可能是您正在寻找的库。你可以找到一些使用here的例子。

【讨论】:

【参考方案7】:

试试gson:Serializing-and-Deserializing-Generic-Types

【讨论】:

以上是关于如何为 List<Class name> 创建 JSONArray的主要内容,如果未能解决你的问题,请参考以下文章

如何为 List<T> 应用异步和等待?

如何为绑定到 List<T> 的 dataGridView 设置 columnNames?

Java 如何为 List<Car> 构建 SQL SELECT 语句?

如何为 List<List<List<Integer>>> nums = new ArrayList<List<List<Integer>&

如何为 Undertow / JBoss 7.2 EAP 重写 RewriteValve?

如何为一个li标签添加图片符号?