¿Cómo puedo serializar un objeto Java en una cadena JSON escapada?

¿Hay alguna manera de convertir un objeto Java en una cadena como la siguiente? Tenga en cuenta que todos los nombres archivados se deben escapar y "\n"se utilizan para separar los registros.

{

"content":"{\"field1\":123, \"field2\":1, \"field3\":0, \"field4\":{\"sub1\":\"abc\", \"sub2\":\"xyz\"}}\n
{\"field1\":234, \"field2\":9, \"field3\":1, \"field4\":{\"sub1\":\"xyz\", \"sub2\":\"abc\"}}"

}

Gracias,

Respuesta 1

Puede usar GSON para esa tarea.

Gson es una biblioteca Java que se puede usar para convertir objetos Java en su representación JSON. También se puede usar para convertir una cadena JSON en un objeto Java equivalente. Gson puede trabajar con objetos Java arbitrarios, incluidos objetos preexistentes de los que no tiene código fuente.

Si necesita tener una mejor representación legible, puede usar la función de impresión bonita.

Gson gson = new GsonBuilder().setPrettyPrinting().create();

Para darse cuenta de algo como su ejemplo, en un primer paso podría serializar su clase de contenido, colocar la cadena resultante como una propiedad en otra clase y serializar esa nuevamente.

De esa manera GSON se encarga de escapar ".

Si reúne sus cadenas en una matriz y utiliza la opción de impresión bonita que se muestra arriba, obtendrá algo similar a su requisito de salto de línea, pero no exactamente lo mismo.

El resultado del proceso descrito anteriormente puede ser similar al siguiente:

{
  "content": [ 
    "{\"field1\":123, \"field2\":1, \"field3\":0, \"field4\":{\"sub1\":\"abc\", \"sub2\":\"xyz\"}}",
    "{\"field1\":234, \"field2\":9, \"field3\":1, \"field4\":{\"sub1\":\"xyz\", \"sub2\":\"abc\"}}"
  ]
}
Respuesta: 2

Me pregunto: ¿cuál es el mejor uso del método principal en un programa más corto (pero con potencial para alargarse)? Esto es lo que quiero decir: cuando comienzo un proyecto. Generalmente comienzo con un ...

Tengo un formulario de registro de empleado donde el empleado agrega sus detalles. Cuando hago clic en el botón Enviar, agrego vacaciones predeterminadas al empleado desde el back-end. Tengo unas vacaciones de mesa en mi ...

Tengo una cadena JSON con un número fijo de matrices de diferentes objetos (creados en Java con JSONObjects y JSONArrays): [[// El primer tipo de objeto {"Iniciales": "MUS"}, {...

Cuando configuro el tiempo de espera de inicio de sesión en la fuente de datos, ¿qué hace? ¿Llama a DriverManager.setLoginTimeout () debajo del capó? Preguntando esto porque tengo curiosidad por saber si es realmente posible ...