Как преобразовать String в Json

У меня есть сервлет в 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();

Ответ 1

Ваша точная проблема описана Чандрой. И вы можете использовать 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));

Ответ 2

Библиотека json на основе Map. Таким образом, 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();

Ответ 3

Я пытался с 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());