1

Java でサーブレットを使用しており、次のことができる方法を知りたいです。

名前の値を持つ 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

あなたの正確な問題はチャンドラによって説明されています。そして、彼の提案を使用して 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基本的に、このキーに関連付けられた以前の値を返します。これはnullであるため、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();
于 2012-06-06T00:30:36.497 に答える