如何将String转换为Json

时间:2012-06-05 19:36:28

标签: java json servlets

我有一个Java的servlet,我想知道如何做到以下几点。

我有一个带有名称值的String变量,并希望创建一个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 个答案:

答案 0 :(得分:3)

Chandra描述了您的确切问题。 您可以使用他的建议使用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));

答案 1 :(得分:2)

基于Map的json库。因此,put基本上返回与此键关联的先前值,即null,因此空指针异常。(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();

答案 2 :(得分: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());