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.

Jay Zhang
fuente
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();
Tanu Garg
fuente
{"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");
Janiel Mac
fuente
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
7

puedes usar

JsonObject.getString("msg"); 
Ruchira Gayan Ranaweera
fuente
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)
Naveen Kumar
fuente
1

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

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

NargesooTv
fuente
0
JSONObject metadata = (JSONObject) data.get("map"); //for example
String jsonString = metadata.**toJSONString()**;
Hakan Anlamaz
fuente
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"));
pshetty
fuente
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());
Kavitha yadav
fuente
-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"}
Raghava
fuente
-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 \"

Vivek Adhikari
fuente