Konwertuj JsonObject na String

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

Powyżej jest a JsonObject, to datajest JsonObject.

Jak wiesz, Stringjak przekonwertować to na coś podobnego "msg":"success", nie mogę bezpośrednio dodać podwójnego cudzysłowu poza datawartością.

Jay Zhang
źródło
3
Nie rozumiem ... Czy mógłbyś przeformułować i podać (nawet niedziałające) fragmenty kodu ilustrujące to, co próbujesz zrobić?
sp00m
4
JsonObject.getString ("msg");
Nicolas Tyler,
Możesz dodać podwójne cudzysłowy z ukośnikiem odwrotnym, \"jeśli tego chcesz. Dodaj swój problem / pytanie!
Benjamin Schwalb,
1
Czy to jest przykład org.json.JSONObject? Jeśli tak, możesz po prostu wywołać toString()metodę of, JSONObjectaby uzyskać tekst JSON pliku JSONObject.
Stanley,
3
Wygląda na to, że to, co ludzie, którzy wylądują tu 3+ lata później, uznają za przydatne, nie ma żadnego związku z pytaniem. Wygląda też na to, że to pytanie już dawno pomogło w wyjaśnieniu. Uważam, że pierwotne pytanie brzmiało, że @JayZhang chciał spłaszczyć obiekt, tak aby dane były ciągiem reprezentującym jego wewnętrzną wartość json. Wydaje się, że nikt nie odpowiedział, jak to zrobić. Zrobienie tego po latach raczej nie będzie miało żadnej wartości dla innych. Ludzie lądują od szukania konwersji json na łańcuch i pogrążają się w niejasnej sesji pytań i odpowiedzi, którą najlepiej usunąć.
dlamblin

Odpowiedzi:

159

Istnieje wbudowana metoda konwersji JSONObject na String. Dlaczego tego nie używasz:

JSONObject json = new JSONObject();

json.toString();
Tanu Garg
źródło
{"data": "{" map ": {" allowNestedValues ​​": true," pdId ": 168543," source ":" "}}", "msg": "sukces", "kod": "0"}
Jay Zhang,
w ciągu odpowiedzi otrzymuję \ \ \ ukośniki. jak przekonwertować obiekt json bez pobierania \ \ \ slashes
Onkar Musale
@Onkar udostępnij próbkę ciągu wraz z fragmentem kodu.
Tanu Garg
podobny do tego wątku. ale nie mogę znaleźć odpowiedzi. stackoverflow.com/q/16563579/8098322
Onkar Musale
{"date": "2013/5/15"}. Czy używasz importu org.json.JSONObject; działa dobrze dla mnie. Udostępnij dokładną próbkę. JSONObject json = new JSONObject (); try {json.put ("date", "2013/5/15"); } catch (JSONException e) {// TODO Automatycznie wygenerowany blok catch e.printStackTrace (); } System.out.println (json.toString ());
Tanu Garg
14

Możesz użyć:

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

A jeśli chcesz uzyskać konkretną wartość, możesz użyć:

jsonObject.getString("msg");

lub Wartość całkowita

jsonObject.getInt("codeNum");
Janiel Mac
źródło
Lepiej jest używać jsonObject.optString ("msg") i jsonObject.optInt ("codeNum"), ponieważ jeśli używasz getString () lub getInt (), a wartości msg lub codeNum są równe null, spowoduje to zgłoszenie błędu i zatrzymanie operacji program. Jedyną różnicą w stosunku do metod, o których wspomniałem, jest to, że nie zgłaszają błędu, jeśli wartości są puste.
Użytkownik 1
7

możesz użyć

JsonObject.getString("msg"); 
Ruchira Gayan Ranaweera
źródło
4

Możesz wypróbować konwerter Gson, aby uzyskać dokładną konwersję, taką jak 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
źródło
1

Dodaj cudzysłowia poza nawiasami i wymień cudzysłów wewnątrz {}z\"

Więc: "{\"data\":{..... }"

NargesooTv
źródło
0
JSONObject metadata = (JSONObject) data.get("map"); //for example
String jsonString = metadata.**toJSONString()**;
Hakan Anlamaz
źródło
JSONObject json = (JSONObject) JSONValue.parse (jsonData); JSONObject data = (JSONObject) json.get ("dane"); Po przeanalizowaniu danych json należy później uzyskać dostęp do obiektu danych, aby uzyskać dane „odwzorowania” na ciąg json.
Hakan Anlamaz
-2
     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
źródło
to nie odpowiada na pytanie.
ralfe
-2

Możesz skorzystać z niezawodnej biblioteki 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
źródło
-5
 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"}

Użyj JSON.stringify, aby przekonwertować całe dane na ciąg, jak poniżej

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

Użyj JSON.parse, aby przekonwertować cały obiekt ciągu na obiekt JSON, jak poniżej

var orgdata = JSON.parse(stringData);

o / p:

Object {data: Object, msg: "success", code: "0"}
Raghava
źródło
-7

Myślę, że potrzebujesz tego:

Załóżmy, że masz JSONtaką próbkę :

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

Konwertowane na ciąg:

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

Po prostu zamień „na”

Vivek Adhikari
źródło