Konvertieren Sie JsonObject in String

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

Oben ist ein JsonObject, das dataist ein JsonObject.

Wie Sie es in ein StringLike umwandeln, wie "msg":"success"Sie wissen, kann ich keine doppelten Anführungszeichen außerhalb datades Werts direkt hinzufügen .

Jay Zhang
quelle
3
Ich kann es nicht verstehen ... Könnten Sie (auch nicht funktionierende) Codefragmente umformulieren und geben, die veranschaulichen, was Sie versuchen zu tun?
sp00m
4
JsonObject.getString ("msg");
Nicolas Tyler
Sie können doppelte Anführungszeichen mit einem Backslash hinzufügen, \"wenn Sie dies wünschen. Bitte fügen Sie Ihr Problem / Ihre Frage hinzu!
Benjamin Schwalb
1
Ist das eine Instanz von org.json.JSONObject? Wenn dies toString()der JSONObjectFall ist, können Sie einfach die Methode von aufrufen , um den JSON-Text des zu erhalten JSONObject.
Stanley
3
Es sieht so aus, als ob das, was Leute, die 3+ Jahre später hier landen, nützlich finden, überhaupt nichts mit dem zu tun hat, was gefragt wurde. Und es sieht auch so aus, als ob die Frage längst nicht mehr hilfreich ist, um geklärt zu werden. Ich glaube, die ursprüngliche Frage war, dass @JayZhang das Objekt so reduzieren wollte, dass Daten eine Zeichenfolgendarstellung seines inneren JSON-Werts waren. Es scheint, dass niemand geantwortet hat, wie das geht. Dies Jahre später zu tun, würde für andere wahrscheinlich keinen Wert haben. Die Leute landen auf der Suche nach der Umwandlung von json in einen String und geraten in eine verwirrte Q & A-Sitzung, die am besten gelöscht wird.
Dlamblin

Antworten:

153

Es gibt eine eingebaute Methode, um ein JSONObject in einen String zu konvertieren. Warum benutzt du das nicht:

JSONObject json = new JSONObject();

json.toString();
Tanu Garg
quelle
{"data": "{" map ": {" allowNestedValues ​​": true," pdId ": 168543," source ":"}} "," msg ":" success "," code ":" 0 "}
Jay Zhang
Ich erhalte \ \ \ Schrägstriche in der Antwortzeichenfolge. wie man ein json-Objekt konvertiert, ohne \ \ \ Schrägstriche zu bekommen
Onkar Musale
@Onkar teile dein String-Beispiel zusammen mit dem Code-Snippet.
Tanu Garg
ähnlich diesem Thread. aber keine Antwort finden. stackoverflow.com/q/16563579/8098322
Onkar Musale
{"Datum": "15.05.2013"}. Verwenden Sie import org.json.JSONObject; Es funktioniert gut für mich. Teilen Sie Ihre genaue Probe. JSONObject json = neues JSONObject (); try {json.put ("Datum", "15.05.2013"); } catch (JSONException e) {// TODO Automatisch generierter catch-Block e.printStackTrace (); } System.out.println (json.toString ());
Tanu Garg
13

Sie können verwenden:

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

Und wenn Sie einen bestimmten Wert erhalten möchten, können Sie Folgendes verwenden:

jsonObject.getString("msg");

oder Integer-Wert

jsonObject.getInt("codeNum");
Janiel Mac
quelle
Es ist besser, jsonObject.optString ("msg") und jsonObject.optInt ("codeNum") zu verwenden, denn wenn Sie getString () oder getInt () verwenden und die Werte für msg oder codeNum null sind, wird der Fehler ausgelöst und gestoppt Programm. Der einzige Unterschied zu den von mir erwähnten Methoden besteht darin, dass sie keinen Fehler auslösen, wenn die Werte null sind.
User1
7

Sie können verwenden

JsonObject.getString("msg"); 
Ruchira Gayan Ranaweera
quelle
2

Sie können Gson Converor ausprobieren, um die genaue Konvertierung wie json.stringify zu erhalten

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
quelle
1

Fügen Sie doppelte Anführungszeichen außerhalb der Klammern hinzu und ersetzen Sie doppelte Anführungszeichen innerhalb der {}durch\"

Damit: "{\"data\":{..... }"

NargesooTv
quelle
0
JSONObject metadata = (JSONObject) data.get("map"); //for example
String jsonString = metadata.**toJSONString()**;
Hakan Anlamaz
quelle
JSONObject json = (JSONObject) JSONValue.parse (jsonData); JSONObject data = (JSONObject) json.get ("data"); Nachdem Sie die JSON-Daten analysiert haben, müssen Sie später auf das Datenobjekt zugreifen, um "Map" -Daten für die JSON-Zeichenfolge abzurufen.
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
quelle
Dies beantwortet die Frage nicht.
Ralfe
-2

Sie können die zuverlässige Bibliothek GSON verwenden

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
quelle
-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"}

Verwenden Sie JSON.stringify, um ganze Daten wie unten beschrieben in Zeichenfolgen zu konvertieren

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"}"

Verwenden Sie JSON.parse, um das gesamte Zeichenfolgenobjekt wie unten beschrieben in ein JSON-Objekt zu konvertieren

var orgdata = JSON.parse(stringData);

o / p:

Object {data: Object, msg: "success", code: "0"}
Raghava
quelle
-6

Ich denke du brauchst das:

Angenommen, Sie haben ein Beispiel JSONwie dieses:

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

In String konvertiert:

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

Ersetzen Sie einfach "durch \"

Vivek Adhikari
quelle