如何将数据列表转换为json

时间:2011-11-18 12:24:57

标签: java json

我想要以下json,其中List<form>将包含form_idform_name的列表,如何使用jsonobject转换它,我没有得到正确的json输出。请帮我解决一下这个。 JSON:

{
    "forms": [
        { "form_id": "1", "form_name": "test1" },
        { "form_id": "2", "form_name": "test2" } 
    ]
}

以上是我需要它的json结构列表。其中id,name是来自表单对象的列表

public static JSONObject getJsonFromMyFormObject(List<Form> form) {
    JSONObject responseDetailsJson = new JSONObject();
    JSONArray jsonArray = null;
    System.out.println(form.size());
    for (int i = 0; i < form.size(); i++) {
        JSONObject formDetailsJson = new JSONObject();
        formDetailsJson.put("form_id", form.get(i).getId());
        formDetailsJson.put("form_name", form.get(i).getName());
        jsonArray = new JSONArray();
        jsonArray.add(formDetailsJson);
    }
    responseDetailsJson.put("form", jsonArray);
    return responseDetailsJson;

} 

此处面临的问题是不将输出作为列表

2 个答案:

答案 0 :(得分:5)

原始问题中的代码接近于实现所描述的期望结果。只需将JSONArray实例创建移到循环之外。

import java.util.ArrayList;
import java.util.List;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class Foo
{
  public static JSONObject getJsonFromMyFormObject(List<Form> form)
  {
    JSONObject responseDetailsJson = new JSONObject();
    JSONArray jsonArray = new JSONArray();

    for (int i = 0; i < form.size(); i++)
    {
      JSONObject formDetailsJson = new JSONObject();
      formDetailsJson.put("form_id", form.get(i).getId());
      formDetailsJson.put("form_name", form.get(i).getName());

      jsonArray.add(formDetailsJson);
    }
    responseDetailsJson.put("forms", jsonArray);
    return responseDetailsJson;
  }

  public static void main(String[] args)
  {
    List<Form> forms = new ArrayList<Form>();
    forms.add(new Form("1", "test1"));
    forms.add(new Form("2", "test2"));

    JSONObject jsonObject = getJsonFromMyFormObject(forms);
    System.out.println(jsonObject);
  }
}

class Form
{
  String id;
  String name;

  Form(String i, String n)
  {
    id = i;
    name = n;
  }

  String getId()
  {
    return id;
  }

  String getName()
  {
    return name;
  }
}

答案 1 :(得分:2)

正确http://www.roseindia.net/tutorials/json/jsonobject-java-example.shtml会有所帮助。

根据Tushar的评论,这里是上述链接网站的摘录:

  

现在,在本部分中,您将学习如何在Java中使用JSON。   要在java中具有JSON功能,您必须具有JSON-lib。 JSON-lib也   需要关注“JAR”文件:

     
      
  1. commons-lang.jar

  2.   
  3. 公地beanutils.jar

  4.   
  5. 公地collections.jar

  6.   
  7. 公地logging.jar

  8.   
  9. ezmorph.jar

  10.   
  11. json-lib-2.2.2-jdk15.jar

  12.         

    JSON-lib是一个java库,用于将bean,集合,映射,java数组和XML转换为JSON和   然后将它们重新转换回bean,集合,地图和   其他。在这个例子中,我们将使用JSONObject类   创建JSONObject的对象,然后我们将打印这些对象   值。对于使用JSONObject类,我们必须导入以下包   “net.sf.json”。要在此对象中添加元素,我们使用了put()   方法。以下是FirstJSONJava.java的完整示例代码   如下:

<强> FirstJSONJava.java

    import net.sf.json.JSONObject;

    public class FirstJSONJava
    {
       public static void main(String args[])
       {
        JSONObject object=new JSONObject();
         object.put("name","Amit Kumar");
        object.put("Max.Marks",new Integer(100));
        object.put("Min.Marks",new Double(40));
        object.put("Scored",new Double(66.67));
        object.put("nickname","Amit");
        System.out.println(object);
      }
   } 
  

要运行此示例,您必须按照以下步骤操作: