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 .


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();

{"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");

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


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)

1

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

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


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

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"));

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());

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.