es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo convertir una única cadena que contiene valores JSON separados por comas en un único objeto JSON?

Estoy obteniendo algunos datos que son una sola cadena.

"{\"somekey\": someValue}, {\"someKey2\": someValue}, {\"someKey3\": someValue}"

¿Cómo puedo devolver eso como un solo objeto JSON como este utilizando las bibliotecas de Java?

{{"somekey": someValue}, {"someKey2": someValue}, {"someKey3": someValue}}

He estado intentando usar la clase ObjectMapper para leer el valor en una List pero no puedo convertirlo.

List<string> list = mapper.readValue(jsonString, new TypeReference<><string>>() {});

Tengo la opción de recuperar los datos en un array de esta manera:

[{"somekey": someValue}, {"someKey2": someValue}, {"someKey3": someValue}]

pero aún no logro convertirlo en una única respuesta de objeto JSON.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para devolver los datos como un único objeto JSON, primero puedes convertir la cadena en un objeto JSONArray utilizando la biblioteca Gson, y luego crear un nuevo objeto JSON y agregar el objeto JSONArray como valor a una clave. Aquí tienes un ejemplo:

    import com.google.gson.*;
    
    public class MyJsonParser {
      public static void main(String[] args) {
        String jsonString = "{\"somekey\": \"someValue\"}, {\"someKey2\": \"someValue\"}, {\"someKey3\": \"someValue\"}";
    
        // Convierte la cadena de entrada en un objeto JSONArray
        Gson gson = new Gson();
        JsonArray jsonArray = gson.fromJson("[" + jsonString + "]", JsonArray.class);
    
        // Crea un nuevo objeto JSON y agrega el JSONArray como valor a una clave
        JsonObject jsonObject = new JsonObject();
        jsonObject.add("data", jsonArray);
    
        // Convierte el objeto JSON en una cadena e imprímelo
        String outputJsonString = gson.toJson(jsonObject);
        System.out.println(outputJsonString);
      }
    }
    

    La salida de este programa sería:

    { "data": [
      { "somekey": "someValue" },
      { "someKey2": "someValue" },
      { "someKey3": "someValue" }
    ]}
    

    Ten en cuenta que tuvimos que concatenar la cadena de entrada con corchetes para convertirla en un array JSON válido. Además, hemos creado una nueva clave “data” con el JSON array como valor. Si lo prefieres, puedes utilizar un nombre de clave diferente o utilizar directamente el JSON array como salida.

Comments are closed.