Как преобразовать pojo в json, используя gson с некоторыми полями String, в которых уже есть json? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть пойо, как показано ниже.У меня есть метод toString, который отвечает за преобразование его в данные JSON.Как вы можете видеть, я использую gson в этом методе toString.

// removed setters for brevity
public class User {

    private String name, email, password;

    // This information field is already a json as mentioned below
    private String information;

    public User(String name, String email, String password, String information) {
        super();
        this.name = name;
        this.email = email;
        this.password = password;
        this.information = information;
    }

    @Override
    public String toString() {
        Gson gson = new GsonBuilder().disableHtmlEscaping().create();
        return gson.toJson(this);
    }

Проблема в том, что из всех этих полей мое поле information уже будет строкой json.В моей основной программе я заполняю этот объект User следующим образом.

// filled it with random info, but I will get this from someplace else
String info = "{  \r\n" + 
        "   \"street_address\":{  \r\n" + 
        "      \"type\":\"string\"\r\n" + 
        "   },\r\n" + 
        "   \"city\":{  \r\n" + 
        "      \"type\":\"string\"\r\n" + 
        "   },\r\n" + 
        "   \"state\":{  \r\n" + 
        "      \"type\":\"string\"\r\n" + 
        "   }\r\n" + 
        "}";

User user = new User("John", "Doe", "password", info);

return user.toString();

Это вывод, который я получаю.

{
  "name": "John",
  "email": "Doe",
  "password": "password",
  "information": "{\r\n    \"street_address\": { \"type\": \"string\" },\r\n    \"city\":           { \"type\": \"string\" },\r\n    \"state\":          { \"type\": \"string\" }\r\n}"
}

То, что я хочу, это последний informationполе для also должно быть правильно отформатировано, то есть это то, что я ожидаю в этом примере.

{  
   "name":"John",
   "email":"Doe",
   "password":"password",
   "information":{  
      "street_address":{  
         "type":"string"
      },
      "city":{  
         "type":"string"
      },
      "state":{  
         "type":"string"
      }
   }
}
...