Java преобразование объекта Java в объект Json

#java #json

#java #json

Вопрос:

Я не могу преобразовать объект Java в объект JSON, это мой основной объект Java :

Я делаю это:

    public class LoginDao {

        String company;
        String user;
        String secure_password;
        String secure_device_id;
        app_info app_info;
    }

  jsonObject.put("company", company);
            jsonObject.put("user", user);
            jsonObject.put("os", os);
            jsonObject.put("ver", ver);
            jsonObject.put("lang", lang);
  

но на выходе у меня нет этого :

 {
    "company":"",
    "user":"test",
    "secure_password":"",
    "secure_device_id":"",

    "app_info":
    {
        "os":"soapui",
        "ver":1,
        "lang":"pl"
    }
}
  

Комментарии:

1. Вы всегда можете использовать GSON, если не хотите тратить на это слишком много времени.

2. @eyadMhanna как я могу это использовать?

3. Проверьте это по этой ссылке на GitHub github.com/google/gson

Ответ №1:

Вы можете сделать это многими другими способами. Ниже приведены:

С помощью Google Gson:

Зависимость Maven:

 <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.0</version>
</dependency>
  

Java-код:

 LoginDao loginData; 

// Here  loginData is the object. ...

Gson gson = new Gson();
String json = gson.toJson(loginData);
  

С помощью Jackson:

Зависимость от Gradle:

 compile 'com.fasterxml.jackson.core:jackson-databind:2.5.3'
  

Java-код

 ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(loginData);
  

Комментарии:

1. Обратите внимание, что для зависимости Gradle между databind и версией есть ненужный пробел. При этом сборка завершается с ошибкой.

2. @jinah, спасибо, брат, за выводы. Я уже исправил эти изменения

Ответ №2:

Если вам нужен вышеуказанный вывод, попробуйте это:

 JSONObject obj = new JSONObject();
obj.put("company", company);
obj.put("user", user);
obj.put("secure_password", secure_password);
obj.put("secure_device_id", secure_device_id);

JSONObject anothetObj = new JSONObject();
anothetObj.put("os", os);
anothetObj.put("ver", ver);
anothetObj.put("lang", lang);
obj.put("app_info", anothetObj);
  

Ответ №3:

Вы можете создать два класса DAO,

 public class LoginDAO {
  private String company;
  private String user;
  private String secure_password;
  private String secure_device_id;


 // Getter Methods 

  public String getCompany() {
    return company;
  }

  public String getUser() {
    return user;
  }

  public String getSecure_password() {
    return secure_password;
  }

  public String getSecure_device_id() {
    return secure_device_id;
  }

 // Setter Methods 

  public void setCompany( String company ) {
    this.company = company;
  }

  public void setUser( String user ) {
    this.user = user;
  }

  public void setSecure_password( String secure_password ) {
    this.secure_password = secure_password;
  }

  public void setSecure_device_id( String secure_device_id ) {
    this.secure_device_id = secure_device_id;
  }
}

public class App_info {
  private String os;
  private float ver;
  private String lang;


 // Getter Methods 

  public String getOs() {
    return os;
  }

  public float getVer() {
    return ver;
  }

  public String getLang() {
    return lang;
  }

 // Setter Methods 

  public void setOs( String os ) {
    this.os = os;
  }

  public void setVer( float ver ) {
    this.ver = ver;
  }

  public void setLang( String lang ) {
    this.lang = lang;
  }
}
  

И тогда вы можете сделать это,

 LoginDAO  login = new LoginDAO();
App_info app = new App_info();

JSONObject jo = new JSONObject(); 

jo.put("company", login.getCompany());
jo.put("user", login.getUser());
jo.put("secure_password", login.getSecure_password());
jo.put("secure_device_id", login.getSecure_device_id());

Map m = new LinkedHashMap(3); 
m.put("os", app.getOs()); 
m.put("ver", app.getVer()); 
m.put("lang", app.getLang());

jo.put("app_info", m); 
System.out.println(jo.toString);
  

Если нет, вы можете просто сделать это,

 JSONObject jo = new JSONObject(
  "{ "company":"", "user":"test", "secure_password":"", "secure_device_id":"", "app_info": { "os":"soapui", "ver":1, "lang":"pl" } }"
);