Перетворити JsonObject на String


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

Вгорі a JsonObject, the dataa a JsonObject.

Як перетворити його на Stringподібне, "msg":"success"як ви знаєте, я не можу безпосередньо додати подвійні лапки поза dataзначенням.


3
Не можу зрозуміти ... Чи можете ви перефразувати та надати (навіть неробочий) фрагменти коду, що ілюструють, що ви намагаєтесь зробити?
sp00m

4
JsonObject.getString ("повідомлення");
Ніколас Тайлер

Ви можете додати подвійні лапки з зворотною рискою рискою, \"якщо це те, що ви хочете. Будь ласка, додайте свою проблему / питання!
Benjamin Schwalb

1
Це приклад org.json.JSONObject? Якщо це так, ви можете просто викликати toString()метод, JSONObjectщоб отримати JSON-текст JSONObject.
Стенлі

3
Схоже, те, що людям, які приземляються тут понад 3 роки, виявляється корисним, зовсім не пов’язане з тим, про що запитували. І, схоже, питання вже давно не допомогло отримати роз’яснення. Я вважаю, що початкове питання полягало в тому, що @JayZhang хотів згладити об'єкт, таким чином, щоб дані були рядковим представленням його внутрішнього значення json. Здається, ніхто не відповів, як це зробити. Робити це через кілька років навряд чи мало би значення для інших. Люди приступають до пошуку перетворення json на рядок і потрапляють у плутаний сеанс запитань та відповідей, який найкраще видалити.
dlamblin

Відповіді:


159

Існує вбудований метод перетворення JSONObject у рядок. Чому б вам не використовувати це:

JSONObject json = new JSONObject();

json.toString();

{"data": "{" map ": {" allowNestedValues ​​": true," pdId ": 168543," source ":" "}}", "msg": "успех", "код": "0"}
Jay Zhang

я отримую \ \ \ косу риску у рядку відповіді. як перетворити об'єкт
JSON,

@Onkar поділіться зразком рядка разом із фрагментом коду.
Тану Гарг,

подібний до цієї нитки. але не знайшов відповіді. stackoverflow.com/q/16563579/8098322
Євсюков Musale

{"date": "2013/5/15"}. Ви використовуєте import org.json.JSONObject; це працює нормально для мене. Поділіться своїм точним зразком. JSONObject json = новий JSONObject (); спробуйте {json.put ("дата", "2013/5/15"); } catch (JSONException e) {// TODO Автоматично згенерований блок catch e.printStackTrace (); } System.out.println (json.toString ());
Тану Гарг,

14

Ви можете використовувати:

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

І якщо ви хочете отримати конкретне значення, ви можете використовувати:

jsonObject.getString("msg");

або ціле число

jsonObject.getInt("codeNum");

Краще використовувати jsonObject.optString ("msg") і jsonObject.optInt ("codeNum"), тому що якщо ви використовуєте getString () або getInt (), а значення msg або codeNum є нульовими, це викине та помилку і зупинить програма. Єдина відмінність від методів, які я згадав, полягає в тому, що вони не видадуть помилки, якщо значення є нульовими.
Користувач1


4

Ви можете спробувати конвертер Gson, щоб отримати точну конверсію, таку як 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

Додайте подвійні лапки поза дужками і замініть подвійні лапки всередині {}з\"

Так: "{\"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 ("дані"); Після того, як ви проаналізували дані json, вам потрібно отримати доступ до об'єкта даних, щоб пізніше отримати дані "map" у рядок json.
Хакан Анламаз,

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

це не відповідає на питання.
ralfe

-2

Ви можете використовувати надійну бібліотеку 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"}

Використовуйте JSON.stringify для перетворення цілих даних у рядок, як показано нижче

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

Використовуйте JSON.parse, щоб перетворити весь об'єкт рядка в об'єкт JSON, як показано нижче

var orgdata = JSON.parse(stringData);

o / p:

Object {data: Object, msg: "success", code: "0"}

-7

Я думаю, вам потрібно це:

Припустимо, у вас є такий зразок JSON:

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

Перетворено в рядок:

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

Просто замініть "на"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.