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ą.


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

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

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


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)

1

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

Więc: "{\"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 ("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"));

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

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

-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”

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.