2012-06-05 191 views
1

我在Java中有一個servlet,我想知道如何執行以下操作。如何將字符串轉換爲Json

我有一個字符串變量與名稱的值,並希望創建一個Json的變量是類似{"name": "David"}

我該怎麼做?

我有下面的代碼,但我得到一個錯誤:

Serious: Servlet.service() for servlet threw 
    exception servlet.UsuarioServlet java.lang.NullPointerException 
       at servlet.UsuarioServlet.doPost (UsuarioServlet.java: 166): 

在行

String myString = new JSONObject().put("name", "Hello, World!").toString(); 

回答

3

您的具體問題是由錢德拉描述。 你可以使用他的建議使用JSONObject。正如你現在看到的那樣,它的設計者並沒有記住像鏈接這樣的屬性,這使得其他語言或庫的成功。

我建議你使用非常好的Google Gson之一。這使得無論解碼和編碼很容易:

的想法是,你可以定義你的類,例如:

public class MyClass { 
    public String name = "Hello, World!"; 
} 

private Gson gson = new GsonBuilder().create(); 
PrintWriter writer = httpServletResponse.getWriter(); 
writer.write(gson.toJson(yourObject)); 
+0

+1 cuz即時使用它呢! –

2

的JSON庫基於地圖。因此,put基本上返回與此關鍵字相關聯的先前值,因爲它是空的,所以空指針異常。(http://docs.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html#put%28java.lang.Object,%20java.lang.Object%29

您可以按如下方式重寫代碼以解決問題。

JSONObject jsonObject1 = new JSONObject(); 
jsonObject1.put("name", "Hello, World"); 
String myString = jsonObject1.toString(); 
+0

我喜歡你,因爲你比我直接回答的確切遇到的錯誤。 –

1

我試圖與GSON,GSON是您的JSONString直接轉換成Java類對象。

例子:

String jsonString = {"phoneNumber": "8888888888"} 

創建一個新的類:

class Phone { 

@SerializedName("phoneNumber") 
private String phoneNumebr; 


public void setPhoneNumber(String phoneNumebr) { 
this.phoneNumebr = phoneNumebr; 
} 

public String getPhoneNumebr(){ 
return phoneNumber; 
} 

} 

//在java中

Gson gson = new Gson(); 
Phone phone = gson.fromJson(jsonString, Phone.class); 

System.out.println(" Phone number is "+phone.getPhoneNumebr());