Chuyển đổi JsonObject thành Chuỗi


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

Trên là a JsonObject, datalà a JsonObject.

Làm thế nào để chuyển đổi nó thành Stringtương tự "msg":"success"như bạn biết, tôi không thể thêm trực tiếp dấu ngoặc kép bên ngoài datagiá trị của.


3
Tôi không hiểu được ... Bạn có thể diễn đạt lại và cung cấp các đoạn mã (thậm chí không hoạt động) minh họa những gì bạn đang cố gắng thực hiện không?
sp00m

4
JsonObject.getString ("tin nhắn");
Nicolas Tyler

Bạn có thể thêm dấu ngoặc kép với dấu gạch chéo ngược \"nếu đó là những gì bạn muốn. Vui lòng thêm vấn đề / câu hỏi của bạn!
Benjamin Schwalb

1
Đó có phải là một ví dụ của org.json.JSONObject? Nếu đúng như vậy, bạn có thể chỉ cần gọi toString()phương thức của JSONObjectđể lấy văn bản JSON của JSONObject.
Stanley

3
Có vẻ như những gì những người đến đây hơn 3 năm sau thấy hữu ích hoàn toàn không liên quan đến những gì đã được hỏi. Và có vẻ như câu hỏi đã qua rất lâu giúp được làm rõ. Tôi tin rằng câu hỏi ban đầu là @JayZhang muốn làm phẳng đối tượng, sao cho dữ liệu là một chuỗi biểu diễn giá trị json bên trong của nó. Có vẻ như không ai trả lời làm thế nào để làm điều đó. Làm như vậy nhiều năm sau sẽ không có bất kỳ giá trị nào đối với người khác. Mọi người đang đến từ việc tìm kiếm chuyển đổi json thành một chuỗi và bị sa lầy trong một phiên Hỏi và Đáp nhầm lẫn bị xóa tốt nhất.
dlamblin

Câu trả lời:


153

Có một phương thức sẵn có để chuyển đổi một JSONObject thành một chuỗi. Tại sao bạn không sử dụng cái đó:

JSONObject json = new JSONObject();

json.toString();

{"data": "{" map ": {" allowNestedValues ​​": true," pdId ": 168543," source ":" "}}", "msg": "success", "code": "0"}
Jay Zhang,

tôi nhận được \ \ \ gạch chéo trong chuỗi phản hồi. làm thế nào để chuyển đổi đối tượng json mà không nhận được \ \ \ slashes
Onkar Musale

@Onkar chia sẻ mẫu chuỗi của bạn cùng với đoạn mã.
Tanu Garg

tương tự như chủ đề này. nhưng không thể tìm thấy câu trả lời. stackoverflow.com/q/16563579/8098322
Onkar Musale

{"date": "2013/5/15"}. Bạn đang sử dụng import org.json.JSONObject; nó hoạt động tốt cho tôi. Chia sẻ mẫu chính xác của bạn. JSONObject json = new JSONObject (); thử {json.put ("date", "2013/5/15"); } catch (JSONException e) {// VIỆC CẦN LÀM Khối bắt được tạo tự động e.printStackTrace (); } System.out.println (json.toString ());
Tanu Garg

13

Bạn có thể dùng:

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

Và nếu bạn muốn nhận một giá trị cụ thể, bạn có thể sử dụng:

jsonObject.getString("msg");

hoặc Giá trị nguyên

jsonObject.getInt("codeNum");

Tốt hơn là sử dụng jsonObject.optString ("msg") và jsonObject.optInt ("codeNum") bởi vì nếu bạn sử dụng getString () hoặc getInt () và các giá trị msg hoặc codeNum là null, nó sẽ tạo ra lỗi và dừng chương trình. Chỉ có sự khác biệt với các phương pháp tôi đã đề cập là chúng sẽ không gây ra lỗi nếu các giá trị là null.
User1


2

Bạn có thể thử trình chuyển đổi Gson, để nhận được chuyển đổi chính xác như 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

Thêm dấu ngoặc kép bên ngoài dấu ngoặc và thay thế dấu ngoặc kép bên trong {}bằng\"

Vì thế: "{\"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"); Sau khi bạn đã phân tích cú pháp dữ liệu json, bạn cần truy cập vào đối tượng dữ liệu sau đó lấy dữ liệu "ánh xạ" đến chuỗi json.
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"));

điều này không trả lời câu hỏi.
ralfe

-2

Bạn có thể sử dụng thư viện đáng tin cậy 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());

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

Sử dụng JSON.stringify để chuyển đổi toàn bộ dữ liệu thành chuỗi như bên dưới

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

Sử dụng JSON.parse để chuyển đổi toàn bộ đối tượng chuỗi thành Đối tượng JSON như bên dưới

var orgdata = JSON.parse(stringData);

o / p:

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

-6

Tôi nghĩ bạn cần điều này:

Giả sử bạn có Mẫu JSONnhư thế này:

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

Được chuyển đổi thành chuỗi:

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

Chỉ cần thay thế "bằng \"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.