2011-11-18 61 views
2

我想要下面的json,其中List<form>將有form_id,form_name列表,我怎樣才能使用jsonobject轉換,我沒有得到正確的json輸出。請幫我解決一下這個。 JSON:如何將數據列表轉換爲json

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

以上是JSON結構,我需要它的list.Where ID,名稱是從形式對象

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; 

} 

列表在這裏面對的問題沒有得到輸出列表

+0

你需要鑰匙或者只是像價值,如果你需要的關鍵「form_id」或不只是在列表存儲值像1,2和TEST1和TEST2 – Pratik

+0

我需要的關鍵還 – Vishal

+0

您可以使用GSON這樣>> [1] [1]:http://stackoverflow.com/a/15332888/3920648 它爲我工作 – Telember

回答

2

合理http://www.roseindia.net/tutorials/json/jsonobject-java-example.shtml將有所幫助。

根據從圖莎爾評論,這裏離aboved鏈接網站提取物:

現在,在這部分你會學習如何在Java中使用JSON。 要在Java中具有JSON的功能,您必須具有JSON-lib。 JSON-lib中也 需要下面的 「JAR」 的文件:

  1. 公地lang.jar

  2. 公地beanutils.jar

  3. 的commons-collections.jar

  4. 公地-logging.jar

  5. ezmorph.jar

  6. JSON-LIB-2,2,2- jdk15.jar

JSON-lib是一個Java庫變換豆,集合,地圖,Java數組和XML和JSON然後 用於重新轉換它們回到豆類,收藏品,地圖和其他人。在這個例子中,我們將使用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); 
     } 
    } 

要運行這個例子,你必須遵循這幾個步驟如下:

+0

我想,你h大家把Code_snippet。 (一個月前,我也被一位資深人士勸告,因爲鏈接不安全,他們可以在將來被刪除或者將被破解)! – Tushar

+1

根據你的意願,我編輯了我的答案。 – reporter

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; 
    } 
} 
+0

BinaryNights指出,他看到的API沒有爲JSONArray提供名爲「put」的方法,而是提供了一個名爲「add」的方法。我在上面的例子中使用的API確實提供了「put」方法,並且編譯和驗證了這些代碼以產生所述的結果。 –