Convertir JsonObject en String


81
{
    "data": 
    {
        "map":
        {
            "allowNestedValues": true,
            "create": "2012-12-11 15:16:13",
            "title": "test201212110004",
            "transitions": []
        }
    },
    "msg": "success",
    "code": "0"
}

Arriba hay un JsonObject, el dataes un JsonObject.

Cómo convertirlo en un me Stringgusta "msg":"success"como sabe, no puedo agregar directamente comillas dobles fuera datadel valor.


3
No puedo entenderlo ... ¿Podría reformular y proporcionar fragmentos de código (incluso que no funcionen) que ilustren lo que está intentando hacer?
sp00m

4
JsonObject.getString ("msg");
Nicolas Tyler

Puede agregar comillas dobles con una barra invertida \"si eso es lo que desea. Por favor, agregue su problema / pregunta.
Benjamin Schwalb

1
¿Es eso una instancia de org.json.JSONObject? Si es así, simplemente puede llamar al toString()método de JSONObjectpara obtener el texto JSON de JSONObject.
Stanley

3
Parece que lo que las personas que aterrizan aquí más de 3 años después encuentran útil no está relacionado en absoluto con lo que se preguntó. Y también parece que la pregunta ya no ha ayudado a aclararla. Creo que la pregunta original era que @JayZhang quería aplanar el objeto, de modo que los datos fueran una representación de cadena de su valor json interno. Parece que nadie respondió cómo hacerlo. Es poco probable que hacerlo años después tenga algún valor para los demás. La gente acaba buscando convertir json en una cadena y se ve envuelta en una sesión confusa de preguntas y respuestas que es mejor eliminar.
dlamblin

Respuestas:


153

Hay un método incorporado para convertir un JSONObject en un String. ¿Por qué no usas eso?

JSONObject json = new JSONObject();

json.toString();

{"data": "{" map ": {" allowNestedValues ​​": true," pdId ": 168543," source ":" "}}", "msg": "éxito", "código": "0"}
Jay Zhang

obtengo \ \ \ barras en la cadena de respuesta. cómo convertir un objeto json sin obtener \ \ \ barras inclinadas
Onkar Musale

@Onkar comparte tu muestra de cadena junto con el fragmento de código.
Tanu Garg

similar a este hilo. pero incapaz de encontrar una respuesta. stackoverflow.com/q/16563579/8098322
Onkar Musale

{"date": "2013/5/15"}. ¿Está utilizando import org.json.JSONObject; esta trabajando bien para mi. Comparta su muestra exacta. JSONObject json = new JSONObject (); intente {json.put ("fecha", "2013/5/15"); } catch (JSONException e) {// TODO Bloque de captura generado automáticamente e.printStackTrace (); } System.out.println (json.toString ());
Tanu Garg

13

Puedes usar:

JSONObject jsonObject = new JSONObject();
jsonObject.toString();

Y si desea obtener un valor específico, puede usar:

jsonObject.getString("msg");

o valor entero

jsonObject.getInt("codeNum");

Es mejor usar jsonObject.optString ("msg") y jsonObject.optInt ("codeNum") porque si usa getString () o getInt () y los valores de msg o codeNum son nulos, arrojará un error y detendrá el programa. La única diferencia con los métodos que he mencionado es que no arrojarán un error si los valores son nulos.
Usuario1


2

Puede probar el convertidor Gson, para obtener la conversión exacta como json.stringify

val jsonString:String = jsonObject.toString()
val gson:Gson = GsonBuilder().setPrettyPrinting().create()
val json:JsonElement = gson.fromJson(jsonString,JsonElement.class)
val jsonInString:String= gson.toJson(json)
println(jsonInString)

1

Agregue comillas dobles fuera de los corchetes y reemplace las comillas dobles dentro de {}con\"

Entonces: "{\"data\":{..... }"


0
JSONObject metadata = (JSONObject) data.get("map"); //for example
String jsonString = metadata.**toJSONString()**;

JSONObject json = (JSONObject) JSONValue.parse (jsonData); JSONObject datos = (JSONObject) json.get ("datos"); Después de haber analizado los datos json, necesita acceder al objeto de datos y luego obtener los datos del "mapa" en la cadena json.
Hakan Anlamaz

-1
     This should get all the values from the above JsonObject  
     System.out.println(jsonObj.get("msg"));
     System.out.println(jsonObj.get("code"));

     JsonObject obj= jsonObj.get("data").getAsJsonObject().get("map").getAsJsonObject();
     System.out.println(obj.get("allowNestedValues"));
     System.out.println(obj.get("create"));
     System.out.println(obj.get("title"));
     System.out.println(obj.get("transitions"));

esto no responde a la pregunta.
ralfe

-2

Puede utilizar la biblioteca confiable GSON

private static final Type DATA_TYPE_JSON = 
        new TypeToken<JSONObject>() {}.getType();           
JSONObject orderJSON = new JSONObject();
orderJSON.put("noOfLayers", "2");
orderJSON.put("baseMaterial", "mat");
System.out.println("JSON == "+orderJSON.toString());
String dataAsJson = new Gson().toJson(orderJSON, DATA_TYPE_JSON);
System.out.println("Value of dataAsJson == "+dataAsJson.toString());
String data = new Gson().toJson(dataAsJson);
System.out.println("Value of jsonString == "+data.toString());

-4
 var data= {"data": {"map":{"allowNestedValues": true,"create": "2012-12-11 15:16:13","title": "test201212110004","transitions": []}},"msg": "success","code": "0"}

o / p:

Object {data: Object, msg: "success", code: "0"}

Use JSON.stringify para convertir datos completos en una cadena como se muestra a continuación

var stringData = JSON.stringify(data);

o / p:

"{"data":{"map":{"allowNestedValues":true,"create":"2012-12-11 15:16:13","title":"test201212110004","transitions":[]}},"msg":"success","code":"0"}"

Use JSON.parse para convertir el objeto de cadena completo en un objeto JSON como se muestra a continuación

var orgdata = JSON.parse(stringData);

o / p:

Object {data: Object, msg: "success", code: "0"}

-6

Creo que necesitas esto:

Suponga que tiene una muestra JSONcomo esta:

{"ParamOne":"InnerParamOne":"InnerParamOneValue","InnerParamTwo":"InnerParamTwoValue","InnerParamThree":"InnerParamThreeValue","InnerParamFour":"InnerParamFourValue","InnerParamFive":"InnerParamFiveValue"}}

Convertido a cadena:

String response = {\"ParamOne\":{\"InnerParamOne\":\"InnerParamOneValue\",\"InnerParamTwo\":\"InnerParamTwoValue\",\"InnerParamThree\":\"InnerParamThreeValue\",\"InnerParamFour\":\"InnerParamFourValue\",\"InnerParamFive\":\"InnerParamFiveValue\"}} ;

Simplemente reemplace "por \"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.