1

我有一个 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();
4

3 回答 3

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));
于 2012-06-05T19:43:19.453 回答
2

基于 Map 的 json 库。所以,put基本上返回与这个键关联的前一个值,为空,所以空指针异常。(http://docs.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html#把%28java.lang.Object,%20java.lang.Object%29 )

您可以按如下方式重写代码来解决问题。

JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name", "Hello, World");
String myString = jsonObject1.toString();
于 2012-06-06T00:30:36.497 回答
2

我尝试使用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());
于 2017-06-06T11:45:54.360 回答