Как преобразовать 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());